javascript - 过滤数组修改原始数组本身
问题描述
有没有办法用过滤器修改原始数组而不是返回一个新数组?
以防万一这是一个 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
我知道我可以通过一些循环删除元素,但也许有一种更优雅、更有效的方法可以直接使用过滤器来做到这一点?
解决方案
您可以随时过滤和清除数组并将它们添加回来
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);
推荐阅读
- flutter - Flutter 未处理异常:DioError [DioErrorType.other]
- airflow - 如何允许用户在 UI 中查看和运行单个 DAG
- node.js - Nestjs中同一模块中的多个服务
- apache-kafka - 未授权访问主题 - 使用 Kerberos SASL 协议实现的 Kafka 中的聚合存储错误
- ios - 广播视图 (MTHKView) 未扩展全屏
- python - 如何列出 /tmp 文件夹中的文件
- flutter - 如何在容器中显示国家代码
- python - MLKNN - __int__() 采用 1 个位置参数,但使用 fit 方法给出了 2 个
- python - 如何从嵌套字典中的值中删除特殊字符
- angular - 传单使功能同步