Javascript:将项目推送到数组中不会';行不通
我基本上是在尝试循环一个数组来检查一个项是否已经存在: 如果项目存在,请删除它 如果该项不存在,将其推送到数组中 但是,我的代码只允许我添加一项。它忽略了我试图添加的所有其他值Javascript:将项目推送到数组中不会';行不通,javascript,html,arrays,Javascript,Html,Arrays,我基本上是在尝试循环一个数组来检查一个项是否已经存在: 如果项目存在,请删除它 如果该项不存在,将其推送到数组中 但是,我的代码只允许我添加一项。它忽略了我试图添加的所有其他值 var inclfls = []; //new empty array function addfile(val) { if (inclfls.length != 0) { for (var i = 0; i < inclfls.length; i++) { if (inc
var inclfls = []; //new empty array
function addfile(val) {
if (inclfls.length != 0) {
for (var i = 0; i < inclfls.length; i++) {
if (inclfls[i] == val) {
a.style.background = "#999";
inclfls.splice(i, 1); //remove it
}
else {
a.style.background = "#2ECC71";
inclfls.push(val); //push it
}
}
}
else {
a.style.background = "#2ECC71";
inclfls.push(val);
}
alert(inclfls.length);
}
var inclfls=[]//新的空数组
函数addfile(val){
如果(包括长度!=0){
对于(变量i=0;i
我做错了什么?对于数组方法,它更简单:
function addfile(val) {
var index=inclfls.indexOf(val);
if(index===-1){
inclfls.push(val);
a.style.background = "#999";
}else{
inclfls.splice(index,1);
a.style.background = "#2ECC71";
}
}
使用数组方法,它更简单:
function addfile(val) {
var index=inclfls.indexOf(val);
if(index===-1){
inclfls.push(val);
a.style.background = "#999";
}else{
inclfls.splice(index,1);
a.style.background = "#2ECC71";
}
}
在检查整个阵列之前,不要修改任何内容。在第一个不匹配项上,将其添加到数组中,然后将其添加到数组中。事实上,你为每一个不匹配项添加它?“如果该项存在,请删除它”对于一个名为
addfile
的函数来说,这似乎是一件非常奇怪的事情;Don’别粗鲁O@T.J.Crowder.dandavis对此表示抱歉:)删除评论@T.J.Crowder在检查整个阵列之前不要修改任何内容。在第一个不匹配项上,将其添加到数组中,然后将其添加到数组中。事实上,你为每一个不匹配项添加它?“如果该项存在,请删除它”对于一个名为addfile
的函数来说,这似乎是一件非常奇怪的事情;Don’别粗鲁O@T.J.Crowder.dandavis对此表示抱歉:)删除评论@T.J.Crowder注意indexOf
使用=
比较。OP正在使用==
。使用==
可能很好,但值得注意。完美!!简单明了的代码。谢谢dandavis和@T.J.Crowder。我会在3分钟内接受这个mins@T.J.Crowder:说得好。我们无法从OP中区分项目类型,但是是的,这可能不重要,或者实际上更好,因为OP的代码将从[1,2,3]
中删除1
和[1]
,注意索引使用==
比较。OP正在使用==
。使用==
可能很好,但值得注意。完美!!简单明了的代码。谢谢dandavis和@T.J.Crowder。我会在3分钟内接受这个mins@T.J.Crowder:说得好。我们无法从OP中区分项目类型,但是的,这可能无关紧要,或者实际上更好,因为OP的代码将从[1,2,3]
中删除“1”
和[1]