使用减少来表示唯一数字

时间:2018-09-22 19:00:11

标签: javascript

我正在做一些在线编码挑战,我想知道是否有人有更好的方法来编写解决方案。

编写一个名为“ unique”的函数,该函数将从数组中删除所有重复的值。

var numbers = [1, 1, 2, 3, 4, 3,9,0,9]; 

 return array.reduce(function(previous, num){

    var checkForRepeat = previous.find(function(x){
      return x === num;
    });

    if(checkForRepeat) {
      return previous;
    } else {
      previous.push(num);
      return previous;
    }
  }, []);
}
unique(numbers);

2 个答案:

答案 0 :(得分:7)

只要这样做 [...new Set(numbers)]

答案 1 :(得分:3)

通过使用Set可以进一步优化,因为对集合的查找是恒定时间操作,即O(1),而在数组中的查找是对O(n)的操作。

let numbers = [1, 1, 2, 3, 4, 3,9,0,9]; 
function unique(array){
 let set = new Set();
 return array.reduce(function(previous, num){
    if(!set.has(num)){
      previous.push(num);
      set.add(num);
    }
    return previous;
  }, []);
}
numbers = unique(numbers);
console.log(numbers);