Javascript 正在筛选数组,但正在跳过项
我正在尝试使用以下方法筛选数组,但是,我有一个值被跳过 功能过滤器阵列阵列,卸下{ console.log'Array Length:',Array.Length console.logArray:,数组; 日志'Remove:',Remove; console.log'--'; 数组.foreachFunction{ ifremove.includese.serial{ 日志“删除此项:”,e; 数组.数组.indexOfe,1; } }; log'newarray Length:',Array.Length; 返回数组;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
} 假设您不想改变原始数组,可以使用过滤器:
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更适合于所有注释。过滤阵列是最好的选择。我遇到了这个解决方案,结果很好。