为什么我的 JavaScript 函数接受三个数组,而不是包含三个数组的数组
Why does my JavaScript function accept three arrays, but not an array containing three arrays?
function product() {
return Array.prototype.reduce.call(arguments, function(as, bs) {
return [a.concat(b) for each (a in as) for each (b in bs)]
}, [[]]);
}
arr4=[['4','4A','4B'],['16D','15D'],['5d','5e']];
alert(product(['4','4A','4B'],['16D','15D'],['5d','5e']);
上述方法有效,但以下方法不起作用:
arr4=[['4','4A','4B'],['16D','15D'],['5d','5e']];
alert(product(arr4);
感谢您的建议
你可以有一个或另一个;否则它的定义很差。(除非你想做出非常有问题的决定来做特殊大小写,比如"如果我的第一个参数是一个数组,每个元素都是一个数组,则返回不同的东西"。然后你很快就会重新制作 PHP。=])
改用somefunction.apply方法;这就是它的用途。例如:
product.apply(this, arr4)
相当于:
product(arr4[0], arr4[1], ...)
如果你经常这样做,你可以定义product2(arrays) {return product.apply(this,arrays)}
.
但是,除非您想同时执行product([..], [..], ..)
和product([[..],[..],..])
,否则这似乎不优雅。
如果您希望此函数默认表现得像 product([[..],[..],..])
,那么解决此问题的正确方法是修改函数以满足您的需求。它目前使用默认的"variadic"(多个参数(arguments
javascript特有的变量,它代表一个数组,表示你传递给函数的所有参数。如果你想要普通风格的固定参数数函数,这不是你想要的。首先添加相应的参数:
function product(arrays) {
...
}
而不是使用默认的 arguments
变量,而是将其替换为 arrays
。
相关文章:
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 我可以使用JS一次使用JSON数组中的一个字符串吗
- I'我试图用javascript制作文本框,并将输入的值发送到数组中的文本框中进行添加
- 我可以限制我添加到数组中的项目数量吗
- 我怎样才能给数组中的每个对象赋予它们自己的键
- 数组中的对象,我如何访问它们
- 我想使用Javascript中的循环在HTML中的特定id中显示数组中的多个对象
- 我如何才能使数组中的按钮只对其作出响应'使用javascript的自己的包装器
- 我的函数不会返回要保存在数组中的对象
- 当数组中的某个函数没有返回promise时,我可以使用$q.all吗
- 获取我的数组中的每个 ID 映像 src
- 我将如何在 HTML 中将数组中的所有元素显示为可点击的对象
- 如何用javascript创建三维数组我想把数据插入数组中,这有助于我的代码
- 如何在我的setAttribute函数中构建数组中的子函数
- 我看不到Javascript数组中的图像
- 我如何获得 Javascript 中关联数组和常规数组之间的区别
- 我应该如何使这个多维数组中的名称加粗
- 我应该更改数组中的字符串
- 我如何修改它以使用数组中的所有项目
- (EloquentJavascript:第4章)反转数组-我的版本有什么问题吗