Considérez ceci:Rejoindre chaque élément d'un tableau avec les éléments d'un autre tableau
[ ["a", "b"], ["c", "d"], ["e"] ]
Comment cela peut-il être transformés ne à:
[ "a c e", "a d e", "b c e", "b d e" ]
Considérez ceci:Rejoindre chaque élément d'un tableau avec les éléments d'un autre tableau
[ ["a", "b"], ["c", "d"], ["e"] ]
Comment cela peut-il être transformés ne à:
[ "a c e", "a d e", "b c e", "b d e" ]
// éditer: testé et fonctionne
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>");
méthode Essayez concat:
var newArr=[];
for(var i=0; i< arr.length; i++)
{
newArr = newArr.concat(arr[i]);
}
qui vient de produire [ "a", "b", "c", "d", "e"] –
Désolé ma faute, je ne vois pas la sortie que vous vouliez :) symptôme du programmeur. – TheVillageIdiot
Cela fonctionne:
<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>
Cela fonctionnerait encore mieux si vous fermiez l'étiquette du corps;] –
Merci pour votre correction. –
je vous remercie beaucoup! J'ai su que je devais recurse quelque part mais juste ne pourrais pas trouver le modèle. –
Ce code ne sera pas exécuté: il manque) à deux endroits. –