鍍金池/ 問答/HTML/ 為什么用map刪除數(shù)組里的元素一次性刪不干凈?

為什么用map刪除數(shù)組里的元素一次性刪不干凈?

clipboard.png
比如這個數(shù)組對象,state==3的時候我刪除這個元素,可是問題來了,遠行之后發(fā)現(xiàn)結(jié)果如下圖

clipboard.png
不知道什么情況

回答
編輯回答
生性

//原因可能是splice的問題,你splice操作之后,數(shù)組變化了,splice話,你可能要考慮倒著遍歷。
可以這樣:item.date.filter(v=>v.state==3)

2018年5月27日 00:27
編輯回答
悶騷型

[1,2,3,4]
index = 0刪了1變成[2,3,4]
index = 1直接跳過了2。

2017年8月7日 19:19
編輯回答
毀與悔

你在map數(shù)組的同時,還在改著這個數(shù)組?本身這個邏輯就有問題吧?
map()方法返回一個由原數(shù)組中的每個元素調(diào)用一個指定方法后的返回值組成的新數(shù)組。
建議你把符合條件的選項return出來就好了,這樣新的數(shù)組就是符合你要求的數(shù)組。

2018年1月30日 15:10
編輯回答
妖妖

在map遍歷的時候,你執(zhí)行了splice(),導(dǎo)致在應(yīng)該取到下一個元素之前,下一個元素被改到了本身位置之前。
你可以把state:3都分別改成4,5,6,7,8...,之后判斷條件改成if(t.state>=3),再看看輸出結(jié)果就明白了~

2017年7月7日 14:44
編輯回答
脾氣硬

用splice刪除會改變原數(shù)組。map遍歷刪除一個之后,原數(shù)組已經(jīng)改變,而index是從index+1繼續(xù)向下遍歷

2018年4月7日 12:23
編輯回答
陌離殤

這是你刪除了導(dǎo)致date的數(shù)組變動了的原因,比如你把索引2刪掉了,原來是3的變成了2,而下一次是刪除索引3,所以改變位置的3不會被刪除,解決辦法用倒序刪除(var i = arr.length-1;i>=0;i--)或者用filter過濾

2018年2月6日 07:45