gpt4 book ai didi

javascript - 使用reduce删除相似元素

转载 作者:行者123 更新时间:2023-12-03 05:42:23 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com