2017-07-22 2 views
-6

Ich bin mit den folgenden script.concat() Methode funktioniert nicht

var result = []; 
 
var data1 = ['a', 'b', 'c']; 
 
var data2 = ['d', 'e', 'f']; 
 
for (var i = 0; i < data1.length; i++) { 
 
    var tepmArray = []; 
 
    var tempArray1 = []; 
 
    tepmArray.push(data1[i]); 
 
    for (var j = 0; j < data2.length; j++) { 
 
    tempArray1 = []; 
 
    tempArray1.push(data2[j]); 
 
    tepmArray.concat(tempArray1); 
 
    } 
 
    result.push(tepmArray); 
 
} 
 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

Es folgt ergibt sich bringen

[ 
    [ 
     "a" 
    ], 
    [ 
     "b" 
    ], 
    [ 
     "c" 
    ] 
] 

Ich löschte erwarten bin nach

[ 
    [ 
     "a", "d", "e", "f" 
    ], 
    [ 
     "b", "d", "e", "f" 
    ], 
    [ 
     "c", "d", "e", "f" 
    ] 
] 

Was ist falsch an meinem Code?

+2

die Dokumentation von 'Array # concat' lesen. Ernst. Es ist im ersten Absatz. – Tomalak

+1

'.concat()' gibt ein neues Array zurück. – Pointy

Antwort

0

Warum nicht einfach die Werte von data1 und concat dann die Daten vonzuordnenin jeder Iteration für ein neues Array?

var data1 = ['a', 'b', 'c'], 
 
    data2 = ['d', 'e', 'f'], 
 
    result = data1.map(function (a) { 
 
     return [a].concat(data2); 
 
    }); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0
var result = []; 
var data1 = ['a', 'b', 'c']; 
var data2 = ['d', 'e', 'f']; 
for(var i = 0; i < data1.length; i++) { 
var tepmArray = []; 
//var tempArray1 = []; 
tepmArray.push(data1[i]); 
for (var j = 0; j < data2.length; j++) { 
tepmArray.push(data2[j]); 
} 
result.push(tepmArray); 
tepmArray=[]; 
} 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>'); 

0

Hallo Sie sollten in Ihrem Ergebnismatrix für jede Schleife Ihrer data1 Array (also 3 mal hier) alle TempArray drücken:

var result = []; 
var data1 = ['a', 'b', 'c']; 
var data2 = ['d', 'e', 'f']; 
var data1Length = data1.length; 

for (var i = 0; i < data1Length; i++) { 
    var tempArray = []; 
    tempArray.push(data1[i]); 
    for(var j = 0; j < data1Length; j++) { 
     tempArray.push(data2[j]); 
    } 
    result.push(tempArray); 
} 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>'); 

https://jsfiddle.net/80zp1hu4/

0
var result = []; 
var data1 = ['a', 'b', 'c']; 
var data2 = ['d', 'e', 'f']; 
for (var i = 0; i < data1.length; i++) { 
    var tepmArray = []; 
    var tempArray1 = []; 
    tepmArray.push(data1[i]); 
    for (var j = 0; j < data2.length; j++) { 
     tempArray1.push(data2[j]); 
    } 
    tepmArray = tepmArray.concat(tempArray1); 
    result.push(tepmArray); 
} 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>'); 

//You have reinitialized tempArray1 inside inner loop, 
//and concat function returns new array. So you have to reassign it.