【发布时间】:2019-07-10 12:54:24
【问题描述】:
函数接受未知数量的数组作为参数。这些数组也可以包含嵌套数组。我需要抛出重复项并返回一个新数组(没有重复项)。数组元素不应该以排序的方式出现,而是按照它们的顺序,它们位于原来的数组中。
我使用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,那就太好了。
在这些情况下抛出的错误是:
返回 a.concat(b); /n TypeError: a.concat 不是函数
预期输出:
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]。
【问题讨论】:
-
将初始值
[]添加到.reduce。它失败了,因为它在第一个测试用例中执行1.concat -
预期输出是什么?
-
您正在传递多个参数,但该函数只有一个要接收的参数
标签: javascript arrays arguments concatenation