首页 > 解决方案 > 过滤数组修改原始数组本身

问题描述

有没有办法用过滤器修改原始数组而不是返回一个新数组?
以防万一这是一个 XY 问题,原因是我想修改函数内的数组:

function diff(myArray, removeArray){

   // this does not work of course
   myArray = myArray.filter(x => !removeArray.includes(x));
    
}
let myArray = [1,2,3];
diff(myArray, [2,4]);   
console.log(myArray);  // should be [1,3] here

我知道我可以通过一些循环删除元素,但也许有一种更优雅、更有效的方法可以直接使用过滤器来做到这一点?

标签: javascriptfilter

解决方案


您可以随时过滤和清除数组并将它们添加回来

function cleanUp (arr) {
  const temp = arr.filter(x => x % 2);
  arr.length = 0;
  arr.push(...temp)
}

var myArr = [1,2,3,4];
cleanUp(myArr);
console.log(myArr);

用拼接做

function cleanUp (arr) {
  arr.push(...arr.splice(0, arr.length).filter(x => x % 2))
}

var myArr = [1,2,3,4];
cleanUp(myArr);
console.log(myArr);


推荐阅读