javascript - 我将如何使用过滤器 javascript 重构我的代码
问题描述
我想在没有任何重复元素的情况下加入两个数组:
function union(arr1, arr2) {
var obj = {};
for (var i = arr1.length-1; i >= 0; -- i)
obj[arr1[i]] = arr1[i];
for (var i = arr2.length-1; i >= 0; -- i)
obj[arr2[i]] = arr2[i];
var res = []
for (var k in obj) {
if (obj.hasOwnProperty(k))
res.push(obj[k]);
}
return res;
}
union([1, 3, 5], [3, 6, 9]); //[1, 3, 5, 6, 9]
解决方案
使用扩展运算符 ,...arr1
我们可以将两个数组合并为一个,然后通过创建一个 Set 我们可以自动拥有一个只有唯一值的数组。
function union(arr1, arr2){
const unioned = [...arr1, ...arr2];
return new Set(unioned);
}
union([1, 3, 5], [3, 6, 9]);
https://medium.com/front-end-weekly/es6-set-vs-array-what-and-when-efc055655e1a
推荐阅读
- javascript - 具有嵌套表连接的 Knex 查询
- c - 用字符串复制到链表不起作用
- excel - 火花驱动器意外停止并正在重新启动。您的笔记本将自动重新附加
- openai-gym - 宇宙中的observation_n到底是什么?
- docker - 为什么 docker-compose.yml 中的特殊字符会被忽略?
- javascript - 当用户使用 JavaScript 离开菜单时关闭弹出菜单
- python - 如何将 np.nan 类型 Nat 更改为 NaN
- php - 从电子邮件中提取客户数据
- google-apps-script - 列出并复制 Google 表格文件的特定命名版本
- javascript - 地图即使被填满也返回空