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']);
上述作品,但下面不工作:爲什麼我的JavaScript函數接受三個數組,但不是包含三個數組的數組?
arr4=[['4','4A','4B'],['16D','15D'],['5d','5e']];
alert(product(arr4);
感謝建議
Plz考慮更新您的問題標題。 – Jeroen 2012-02-21 21:52:53
'[a.concat(b)for each(a in)for each(b in bs)]''是什麼類型的語法?你確定你使用JavaScript,而不是Python? – 2012-02-21 21:58:26
@Rocket:'for each(.. in ..)'是Mozilla支持的JavaScript擴展,它目前不是ECMAScript標準的一部分(只是標準分支的一部分),因此可能不支持非標準Mozilla瀏覽器,例如Chrome或Internet Explorer或Safari。我會提醒不要使用它。它實際上是**非常好的風格,但應該使用'[] .map'和'[] .forEach'和'[] .filter'和'[] .reduce'等來代替,其中*是*符合標準並得到廣泛支持。 (如果你不喜歡使用這些,請使用jQuery稍微破壞的'$ .each'或$ $ .map'。) – ninjagecko 2012-02-21 22:23:58