JS阵列切换推送&拼接

时间:2011-03-17 04:18:48

标签: javascript arrays toggle

我认为将一个值“切换”为数组的简单任务。

我想要做的是添加行(如果它不存在)并删除它是否存在:

selected = new Array();

// repeated code
if(row in selected===true) selected.splice(row);
else selected.push(row);

现在这个工作正常,除了数组中的第一个元素,它始终保持不变,显然不被“在选中”识别。

a) row = 1 > ["1"]
b) row = 1 > ["1", "1"]
c) row = 2 > ["1", "1", "2"]
d) row = 2 > ["1", "1"]
e) row = 1 > ["1"]
f) row = 1 > ["1", "1"]

使用上面的值和输出,您可以看到“1”被添加为第一个元素并且从未被删除??

1 个答案:

答案 0 :(得分:4)

in运算符和slice方法都采用索引而不是值。即rows = ["1", "2"]将更好地表达为

rows = []
rows[0] = "1";
rows[1] = "2";

所以在上面的例子中,0 in rows返回true,因为rows[0]存在。

或者,在您的情况下,当rows = ["1"]时,1 in rows返回false,因为rows[1]不存在。 然后,当rows = ["1", "1"]时,1 in rows返回true,因为rows[1]存在,因此您将其删除。等等。

而不是数组和推送,你可以尝试使用对象....

var rows = {}

...

if(rows[selected]){
    rows[selected] = selected;
}
else{
    rows[selected] = null;
}
相关问题