2009-10-29 36 views

回答

2

//編輯:已測試並正常工作

function product(set) { 
    if(set.length < 2) 
     return set[0]; 
    var head = set.shift(), p = product(set), r = []; 
    for(var j = 0; j < head.length; j++) 
     for(var i = 0; i < p.length; i++) 
      r.push([head[j]].concat(p[i])); 
    return r; 
} 

var set = [ 
    [ "a", "b", "c"], 
    [ "D", "E" ], 
    [ "x" ] 
]; 

var p = product(set); 
for(var i = 0; i < p.length; i++) 
    document.write(p[i] + "<br>"); 
+0

非常感謝你!我知道我必須在某個地方緩解壓力,但卻找不到這種模式。 – 2009-10-29 08:11:46

+0

此代碼不會運行:它缺少)在兩個地方。 – 2009-10-29 08:15:17

0

嘗試concat方法:

var newArr=[]; 

for(var i=0; i< arr.length; i++) 
{ 
    newArr = newArr.concat(arr[i]); 
} 
+0

將只是生產[ 「A」, 「B」, 「C」, 「d」, 「E」]你想 – 2009-10-29 07:54:09

+0

對不起我的錯,我沒有看到輸出:)程序員的症狀。 – TheVillageIdiot 2009-10-29 10:06:18

1

這工作:

<html><body><script> 
var to_join = [ ["a", "b"], ["c", "d"], ["e"] ]; 
var joined = to_join[0]; 
for (var i = 1; i < to_join.length; i++) { 
    var next = new Array(); 
    var ends = to_join[i]; 
    for (var j = 0; j < ends.length; j++) { 
     for (var k = 0; k < joined.length; k++) { 
      next.push (joined[k]+ " " + (ends[j])); 
     } 
    } 
    joined = next; 
} 
alert (joined); 
</script></body></html> 
+0

如果關閉了身體標籤,它會更好用;] – 2009-10-29 13:04:20

+0

謝謝您的更正。 – 2009-10-29 13:38:42

相關問題