请告诉我正确的方式来处理的火力点阵列? 我想点击一个按钮,当数组或数字中切换的值。 所以每个数只存在一次,说按钮12被点击,则12被添加到火力阵列,如果再次点击那么它的去除。
这是我的代码,但是,它并没有拼接,数量再次添加每次。
blockTime(time: number) {
const idx = _.indexOf(this.times, time);
if (idx >= 0) {
this.times.splice(idx, 1);
} else {
this.times.push(time);
}
}
当你试图在一个阵列切换的值,重新考虑你的数据结构。 每当你做array.contains(...)
或array.indexOf(...)
你可能应该使用一组类似的数据结构。
由于JavaScript的/ JSON没有真正集,通常(在火力地堡至少)通过使用对象与模仿他们true
价值和你的设置项为按键。 然后,突然间,你的操作变得会更加清晰:
blockTime(time: number) {
if (!this.times[time]) {
this.times[time] = true;
}
else {
delete this.times[time];
}
}
或者,如果你没事在保持非阻断时间带与一个false
值:
blockTime(time: number) {
this.times[time] = !(this.times[time] || false);
}
需要注意的是存储这种类型的火力地堡的数据时,最好以确保您的键是字符串,以避免火力地堡的SDK的阵列胁迫。 你可以简单地通过一个字符串,如前缀键做到这一点
blockTime(time: number) {
var key = "time"+number;
if (!this.times[key]) {
this.times[key] = true;
}
else {
delete this.times[key];
}
}