【发布时间】:2012-02-21 21:50:45
【问题描述】:
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);
感谢您的建议
【问题讨论】:
-
[a.concat(b) for each (a in as) for each (b in bs)]是什么语法?你确定你使用的是 JavaScript,而不是 Python? -
@Rocket:
for each (.. in ..)是 Mozilla 支持的 JavaScript 扩展,目前不属于 ECMAScript 标准(只是该标准的一部分),因此可能不支持非Mozilla 浏览器,例如 Chrome 或 Internet Explorer 或 Safari。我会警告不要使用它。这是实际上非常好的风格,但是应该使用[].map和[].forEach和[].filter和[].reduce等,它们是 符合标准并且广泛支持。 (如果您不喜欢使用这些,请使用 jQuery 的稍有损坏的$.each或$.map。)
标签: javascript product cartesian