如何用ES6单行代码实现数组补全及指定元素动态移除?
问题
现有三个数组:
Array1 = ["u101", "u102", "u103", "p101"]; Array2 = ["u101", "u102", "u103", "u104"]; Array3 = ["p101"]
需求为:对比Array1与Array2,将Array2中不存在于Array1的元素(如"u104")加入Array1;同时对比Array3,动态移除Array1中的对应元素(如"p101"),最终得到数组:
newArray = ["u101", "u102", "u103", "u104"];
请问能否使用JavaScript ES6版本的单行代码实现该需求?其他类似问题多为获取数组匹配/不匹配元素,而本需求是补全数组并移除指定元素。
解答
完全可以用ES6特性实现单行代码,具体实现如下:
const newArray = [...new Set([...Array1, ...Array2])].filter(item => !Array3.includes(item));
代码拆解说明:
[...Array1, ...Array2]:将Array1和Array2的元素合并为一个新数组,自动包含Array2中Array1没有的元素;new Set(...):借助Set的唯一性特性,去除合并后数组里的重复元素;[...new Set(...)]:将去重后的Set对象转换回数组格式;.filter(item => !Array3.includes(item)):过滤掉所有存在于Array3中的元素,完成指定元素的移除。
这行代码一次性完成了补全缺失元素和移除指定元素两个需求,最终得到目标数组。
内容的提问来源于stack exchange,提问作者Gowtham Manthena
相关产品推荐
相关产品推荐

