如何连接参数数量未知的数组
How do i concat arrays with unknown amount of arguments
我有了函数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]] and 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
对象使用数组方法。数组方法将返回数组而不是其他参数对象。
要了解更全面的解释,请参阅这个SO答案…
(回答OP评论):
如果你需要深度合并,你可以这样做:
function uniteUnique() {
return Array.prototype.concat.apply([], arrays);
}
甚至:
function uniteUnique() {
return [].concat.apply([], arrays);
}
这应该工作,因为Symbol.isConcatSpreadable
的默认值是false
,所以concat()
作用深度…
根据您的示例,您想要扁平化参数数组。在ES6中,你可以使用Rest参数来获取参数数组和Spread语法来平面化它:
function uniteUnique(...args) {
return [].concat(...args);
}
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/arguments
您可以访问arguments变量来循环传递给给定函数的所有参数。
能像那样解决这个问题,
function uniteUnique(arr) {
var myNewArray = [].concat.apply([], Array.prototype.slice.call(arguments));
return myNewArray;
}
uniteUnique([1, 3, 2], [1, [5]], [2, [4]]) ;
- 计算类元素的未知/动态数组长度
- 如何从php中的会话数组中提取未知数量的元素,并将它们用作JavaScript中的单独变量
- 如何创建一个每行列数未知的html表,对齐列,并为每个单元格/行指定一个id
- 在自定义数组 JavaScript 中创建具有未知数量输入的 JSON
- 谷歌浏览器中数组的未知/不一致的排序行为
- 通过循环访问未知数量的数组来创建JavaScript对象的笛卡尔乘积(powerset?)
- 如何设置具有未知数量对象的数组的默认值
- JavaScript:将线性JSON数组转换为深度未知的树结构
- C3条形图的条形数未知
- 如何在jQuery-Javascript中填充一个月数数组
- 如何循环元素&数数
- 数组中大小未知的字符串数组
- 在AngularJS中设置未知输入数的值
- 递归方法,用于对未知数量的数组的所有值和值进行配对
- 当元素未知时,如何获取数组中元素的计数
- 具有未知行数的数据表服务器端处理
- 列数未知的表分类器
- 如何在对象中迭代一个未知键的数组
- 获取具有未知键的对象中的数组长度
- 将二进制数数组转换为相应的整数