簡體   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