gpt4 book ai didi

javascript - 如何连接参数数量未知的数组

转载 作者:行者123 更新时间:2023-12-02 14:12:52 25 4
gpt4 key购买 nike

所以我有我的函数uniteUnique。它应该获取参数并将它们连接到一个数组。如果示例 3 有特定数量的参数,我将像下面的函数一样实现它

function uniteUnique(arr) {
var args = [];
var newArgs;
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
newArgs = args[0].concat(args[1], args[2]);
}
return newArgs ;
}

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

但是如果 uniteUnique 函数有 2 个参数或任何其他数字怎么办?

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

如何让我的函数知道它应该连接多少个参数,以及如何在 concat() 函数内实现它?

编辑:

输出应如下所示:

uniteUnique([1, 3, 2], [1, [5]], [2, [4]]) 应返回 [1,3,1,1, [5],2,[4]]和 uniteUnique([1, 2, 3], [5, 2, 1]) 应返回 [1,2, 3,5,2,1]

最佳答案

我不确定我是否完全理解您的问题,但是:这个简单的解决方案怎么样?

function uniteUnique() {
return Array.prototype.slice.call(arguments);
}

arguments 对象实际上并不是一个 Array 实例,并且没有任何 Array 方法。因此,arguments.slice(...) 将不起作用,因为arguments 对象没有 slice 方法。

相反,Arrays 确实有此方法,并且由于 arguments 对象与数组非常相似(...),因此两者是兼容的。这意味着我们可以将数组方法与 arguments 对象一起使用。数组方法将返回数组而不是其他参数对象。

有关更全面的解释,请参阅 this SO answer ...

更新(回答OP评论):

如果您需要深度合并,您可以这样做:

function uniteUnique() {
return Array.prototype.concat.apply([], arrays);
}

甚至:

function uniteUnique() {
return [].concat.apply([], arrays);
}

这应该有效,因为 Symbol.isConcatSpread 的 dafaule 值为 false,因此 concat() 的作用深层...

关于javascript - 如何连接参数数量未知的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39345326/

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