加入一个阵列的每一个项目与另一个数组的项目
[ ["a", "b"], ["c", "d"], ["e"] ]
这怎么可能tranformed到:
[ "a c e", "a d e", "b c e", "b d e" ]
//编辑:已测试并正常工作
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>");
尝试concat方法:
var newArr=[];
for(var i=0; i< arr.length; i++)
{
newArr = newArr.concat(arr[i]);
}
将只是生产[ “A”, “B”, “C”, “d”, “E”]你想 – 2009-10-29 07:54:09
对不起我的错,我没有看到输出:)程序员的症状。 – TheVillageIdiot 2009-10-29 10:06:18
这工作:
<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>
如果关闭了身体标签,它会更好用;] – 2009-10-29 13:04:20
谢谢您的更正。 – 2009-10-29 13:38:42
非常感谢你!我知道我必须在某个地方缓解压力,但却找不到这种模式。 – 2009-10-29 08:11:46
此代码不会运行:它缺少)在两个地方。 – 2009-10-29 08:15:17