比如这个数组对象,state==3的时候我删除这个元素,可是问题来了,远行之后发现结果如下图
不知道什么情况
这是你删除了导致date的数组变动了的原因,比如你把索引2删掉了,原来是3的变成了2,而下一次是删除索引3,所以改变位置的3不会被删除,解决办法用倒序删除(var i = arr.length-1;i>=0;i--)或者用filter过滤
//原因可能是splice的问题,你splice操作之后,数组变化了,splice话,你可能要考虑倒着遍历。
可以这样:item.date.filter(v=>v.state==3)
在map遍历的时候,你执行了splice(),导致在应该取到下一个元素之前,下一个元素被改到了本身位置之前。
你可以把state:3都分别改成4,5,6,7,8...,之后判断条件改成if(t.state>=3),再看看输出结果就明白了~
你在map数组的同时,还在改着这个数组?本身这个逻辑就有问题吧?map()
方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。
建议你把符合条件的选项return出来就好了,这样新的数组就是符合你要求的数组。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
[1,2,3,4]
index = 0删了1变成[2,3,4]
index = 1直接跳过了2。