【问题标题】:How would I refactor my code using filter javascript我将如何使用过滤器 javascript 重构我的代码
【发布时间】:2021-02-08 22:08:14
【问题描述】:

我想加入两个没有任何重复元素的数组:

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]

【问题讨论】:

  • 到目前为止你尝试过什么? Stack Overflow 社区不会为您重构代码。
  • 我是 js 新手,想知道如何对两个数组使用过滤器?就像语法一样,我只将它用于一个数组

标签: javascript arrays filter


【解决方案1】:

使用扩展运算符...arr1,我们可以将两个数组合并为一个,然后通过创建一个集合,我们可以自动拥有一个只有唯一值的数组。

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

【讨论】:

    【解决方案2】:

    我想通了:

    function union(arr1, arr2) {
      return arr1.concat(arr2.filter((item) => arr1.indexOf(item) < 0))
    }
    union([1, 3, 5], [3, 6, 9]); //[1, 3, 5, 6, 9]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多