javascript - 使用reduce删除相似元素

标签 javascript

https://www.freecodecamp.com/challenges/sorted-union

编写一个函数,该函数接受两个或多个数组,并按照原始提供的数组的顺序返回一个由唯一值组成的新数组。

我用这段代码解决了这个问题:

function uniteUnique(arr) {
  var arg = arguments[0];
  var newArr = [];
  var i = 0;
  var matchFound = false;  

  //start newArr with each element of arg
  while(i < arg.length){
    newArr.push(arg[i++]);
  }

  //iterate over the argument sets
  for(i = 1; i < arguments.length; i++){
    //iterate over the argument set values
    for(var j = 0; j < arguments[i].length; j++){
      //compare each value with arg values 
      for(var k = 0; k < arg.length; k++){
        if(arg[k] === arguments[i][j]){
          matchFound = true;
        }
      }
      if(!matchFound){
        //if no comparison was found add element to newArr
        newArr.push(arguments[i][j]);
      }
      //reset matchFound 
      matchFound = false;
     }
  }

  return newArr;
}

// Function Call
uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]); //returns [1, 3, 2, 5, 4]

我的问题是如何使用 .reduce 解决这个问题,还有其他方法可以清理这个问题以使其更易于阅读吗?

最佳答案

只是多提供一个选项,以防数据很大并且我们不想创建一个大数组并对其进行过滤。

function uniteUnique(arr) {
    var result = [].concat.apply(arguments[0]);

    for(var i = 1; i < arguments.length; i++) {    
        for(var j = 0; j < arguments[i].length; j++) {
            if (result.indexOf(arguments[i][j]) === -1) {
                result.push(arguments[i][j]);
            }
        }
    }
    return result;
}
    
// Function Call
console.log(uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1])); //returns [1, 3, 2, 5, 4]

关于javascript - 使用reduce删除相似元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40476610/

相关文章:

javascript - 带重定向按钮的模态弹出窗口

javascript - 高级排序算法

javascript - 单击时切换内容可编辑

javascript - 如何将图片高度和宽度传递给 html 灯箱

javascript - 使用嵌套的 ngFor 遍历两个单独的数组

php - 处理从 jQuery 中的 AJAX 调用返回的数据

javascript - 切换不适用于复选框

javascript - Asp.net 使用 jQuery 将文本框输入转换为大写

javascript - 如何使用jquery计算多个选择的值的总和?

javascript - 无法安装 Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication 目标 NETCore,版本 = v4.5