![](/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.