![](/img/trans.png)
[英]Remove an Item From an Array with JavaScript splice/indexOf
[英]splice method not accepting variable to remove item from array javascript
我有一个对象,该对象的字符串值附加到同一属性,如果存在该值,我希望使用函数将其删除。 为此,我将字符串值放入数组中,对其进行迭代,并希望使用splice()
删除该值。 问题在于splice()
似乎无法识别数组计数器。 即使计数器更高,它始终会删除数组中的第一项。 我检查了代码,循环正常运行。
我没有在网上看到任何东西可以暗示splice
不能与索引中的变量一起使用。 如何使splice
使用计数器删除相对值?
var obj = {
className: 'open menu next thing'
}
function removeClass(elem, cls) {
var arr = elem.className.split(' ');
for(var i = 0; i < arr.length; i++) {
if(arr[i] == cls) {
alert(arr[i]);
var splCout = arr.splice(arr[i], 1);
alert(splCout);
}
}
var str = arr.join(' ');
alert(str);
}
removeClass(obj, 'next');
您有2个不同的问题要解决:
1-您正在修改for循环中的数组对象,在第一次splice
后,更改了数组,其余循环项的arr.length
完全不同,以防止它创建像len
这样的变量并将其设置为数组的长度一次。
但是如果您以另一种方式更改循环,则只需一次:
for(var i = arr.length; i >= 0; i--) {
if(arr[i] == cls) {
alert(arr[i - 1]);
var splCout = arr.splice(arr[i - 1], 1);
alert(splCout);
}
}
2-下一个也是更重要的问题是数组的索引,当您删除索引时,其他索引会更改(i ...... n),并且代码将无法正常工作,但是正如您看到的那样即使删除索引,以这种方式迭代数组,其他索引返回零(i .... 0)也不会改变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.