gpt4 book ai didi

javascript - 连接未知数量的参数数组。抛出重复

转载 作者:行者123 更新时间:2023-11-30 08:20:12 24 4
gpt4 key购买 nike

一个函数接受未知数量的数组作为参数。这些数组也可以由嵌套数组组成。我需要抛出重复项并返回一个新数组(没有重复项)。数组元素不应该以排序的方式出现,而是按照它们的顺序,它们位于它们的原始数组中。

我使用 map 将每个数组插入一个新数组。我使用 reduce 来连接数组。我使用 Set 来抛出重复项。

它只在这种情况下有效

uniteUnique([[1, 2, 3], [5, 2, 1], [2, 3, 4]]);

我不知道,为什么它在这些情况下不起作用:

Argument Fail1 // uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

Argument Fail2 // uniteUnique([1, 3, 2], [1, [5]], [2, [4]]);
Argument Fail3 // uniteUnique([1, 2, 3], [5, 2, 1]);

这是我的代码

function uniteUnique(arr) {
let test = [];
arr.map(function(argu) {
test.push(argu);
}, []);

let flat = test.reduce(function(a, b) {
return a.concat(b);
});

let unique = new Set(flat);

console.log(unique);
}

怎么了?如果有人能告诉我,为什么我的代码不适用于 Argument Fail 1-3,那就太好了。

在这些情况下抛出的错误是:

return a.concat(b); /n TypeError: a.concat is not a function

预期输出:uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]) 应该返回 [1, 3, 2, 5, 4]uniteUnique([1, 3, 2], [1, [5]], [2, [4]]) 应该返回 [1, 3, 2, [5], [ 4]]uniteUnique([1, 2, 3], [5, 2, 1]) 应该返回 [1, 2, 3, 5]uniteUnique([1, 2, 3], [5, 2, 1, 4], [2, 1], [6, 7, 8]) 应该返回 [1, 2 , 3, 5, 4, 6, 7, 8].

最佳答案

您可以检查该项目是否是一个数组,并将该数组也放平。

const
flat = array => array.reduce((r, a) => r.concat(Array.isArray(a) ? flat(a) : a), []),
uniteUnique = (...array) => [...new Set(flat(array))];

console.log(uniteUnique([[1, 2, 3], [5, 2, 1], [2, 3, 4]]));
console.log(uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]));
console.log(uniteUnique([1, 3, 2], [1, [5]], [2, [4]]));
console.log(uniteUnique([1, 2, 3], [5, 2, 1]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 连接未知数量的参数数组。抛出重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54725266/

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