繁体   English   中英

splice方法不接受变量以从数组javascript中删除项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM