javascript - 过滤数组但 Item 被跳过

标签 javascript arrays foreach array-splice

我正在尝试使用以下方法过滤数组,但是,我有一个值被跳过!

function filterArray(array,remove){
    
    console.log('Array Length:',array.length)
    console.log("Array:",array);
    console.log('Remove:',remove);
    console.log('------');
    array.forEach(function(e){       
       if(remove.includes(e.serial)){
           console.log('remove this item:',e);
           array.splice(array.indexOf(e),1);
       }       
    });
    
    console.log('New Array Length:',array.length);
    return array;
}

我不知道为什么会发生这种情况。有人可以解释一下这种情况吗?

这是我的控制台输出

enter image description here

最佳答案

假设你不想改变原始数组,你可以使用过滤器:

function filterArray(array, remove){
    return array.filter(e => !remove.includes(e.serial));
}

关于javascript - 过滤数组但 Item 被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840169/

相关文章:

javascript - 如何将两个或多个包含多个对象的数组合并为一个并增加它们的 ID?

javascript - React - 组件中的折射状态

javascript - 未捕获的 TypeError 对象 [对象对象] 没有方法 'datepicker'

javascript - 同步动态加载 JavaScript

javascript - 如何根据条件在数组中添加对象元素

javascript - KnockoutJS foreach 嵌套数组的单个元素

javascript - 焦点使用 Jquery <tr> <td>

javascript - 从嵌套的谷歌地图标记数组获取标记位置

c++ - 可以安全地从基于以下范围的 map 中删除吗?

Java 8 在一次迭代中求和两个对象属性