Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在筛选数组,但正在跳过项_Javascript_Arrays_Foreach_Array Splice - Fatal编程技术网

Javascript 正在筛选数组,但正在跳过项

Javascript 正在筛选数组,但正在跳过项,javascript,arrays,foreach,array-splice,Javascript,Arrays,Foreach,Array Splice,我正在尝试使用以下方法筛选数组,但是,我有一个值被跳过 功能过滤器阵列阵列,卸下{ console.log'Array Length:',Array.Length console.logArray:,数组; 日志'Remove:',Remove; console.log'--'; 数组.foreachFunction{ ifremove.includese.serial{ 日志“删除此项:”,e; 数组.数组.indexOfe,1; } }; log'newarray Lengt

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

功能过滤器阵列阵列,卸下{ console.log'Array Length:',Array.Length console.logArray:,数组; 日志'Remove:',Remove; console.log'--'; 数组.foreachFunction{ ifremove.includese.serial{ 日志“删除此项:”,e; 数组.数组.indexOfe,1; } }; log'newarray Length:',Array.Length; 返回数组;
} 假设您不想改变原始数组,可以使用过滤器:

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

为什么不直接使用array.filter?如果使用splice删除当前数组元素,那么下一个元素将成为当前元素,并且在调用forEach回调函数后发生的最后一件事是当前索引递增,因此跳过下一个元素element@EvanTrimboli-array.splice在适当位置突变数组,array.filter返回一个新数组-这可能不是代码的意图,但函数返回一个数组,因此您可以想象其意图不一定是在适当的位置对其进行变异。提示:有时for循环比.forEach/.map/.filter/.etcThanks更适合于所有注释。过滤阵列是最好的选择。我遇到了这个解决方案,结果很好。