首页 > 解决方案 > 我将如何使用过滤器 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]

标签: javascriptarraysfilter

解决方案


使用扩展运算符 ,...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


推荐阅读