我正在做一些在线编码挑战,我想知道是否有人有更好的方法来编写解决方案。
编写一个名为“ 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);
答案 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);