2017-08-20 1 views
-1

Wie analysiere ich jeden Index von 3 Arrays von Zeichenketten und verkette jeden Wert mit demselben Index, um nur ein Array zu haben?Verkettung von Arrays

Beispiel Eingabe:

index 0 of array 1 value : "Car" 
index 0 of array 2 value : "red" 
index 0 of array 3 value : "Nikolai" 

Erwartete Ausgang, array (alle in einem):

index 0 value : "Car , red , Nikolai" 
+0

['Array.join()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join) nach dem Durchlaufen jedes Arrays und Speichern seines Indexes 0. – h2ooooooo

+0

Was hast du bisher versucht? – twoleggedhorse

Antwort

0

die Arrays in einem Array hinzufügen, auf dem Arrays iterieren und den ersten Wert davon erhalten, Sie verketten sich in einer String-Variablen. Wie zuletzt fügen Sie diese String-Variable in ein neues Array ein.

var arr1 = ['Car', 'red', 'Nikolai']; 
var arr2 = ['Car', 'red', 'Nikolai']; 
var arr3 = ['Car', 'red', 'Nikolai']; 
var arrs = [arr1, arr2, arr3]; 

var concatenatedString = ""; 
arrs.forEach(function(arr) { 
    if (concatenatedString.length > 0){ 
    concatenatedString += ", "; 
    } 
    concatenatedString += arr[0]; 
}); 

var result = [concatenatedString]; 
+0

Ich denke, OP hat 3 Arrays mit Werten in ihrem Index 0 und wollen sie in einzelne Zeichenfolge durch Kommata getrennt ziehen. – h2ooooooo

0

Wäre es nicht möglich mit einer for-Schleife?

for (var i = 0; i < array.length; i++) { 
    newArray[i] = Array1[i] + "," + Array2[i] + "," + Array3[i] 
} 
0

Sie können eine einfache for-Schleife verwenden. Beachten Sie, dass die Arrays möglicherweise nicht die gleiche Größe haben.

var a = ["a", "aa", "aaa"]; 
var b = ["b", "bb", "bbb"]; 
var c = ["c", "cc"]; 

var all = []; 

for (var i = 0; i < Math.min(a.length, b.length, c.length); i++) { 
    all[i] = [a[i], b[i], c[i]].join(" , "); 
} 
0

Mit ES6 können Array-Werte in ein neues Array gespreizt werden. So könnte man so etwas tun:

const vehicles = ["Car"]; 
const colors = ["Red"]; 
const names = ["Nikolai"]; 

const combined = [...vehicles, ...colors, ...names]; 

Sorry, jetzt habe ich wieder lesen Ihre Frage, die Sie nur möchten, den gleichen Index jedes Array kombinieren:

function returnCombined(index) { 
    return [vehicles[index], colors[index], names[index]]; 
} 
0

Dies ist ein gutes Beispiel für .map() und .join().

var result = array.map(a => a[0]).join(", "); 

Oder .reduce(), obwohl Sie das folgende Komma aus dem Ergebnis .slice() müssen.

var result = array.reduce((s,a) => s + a[0] + ", ", "").slice(0, -2); 
3

Für den allgemeinen Fall, in dem Sie diese Verkettung wollen auch für den Index 1, Index 2, passieren ... etc, können Sie diese Funktion verwenden, ES6:

function joinTransposed(delim, ...args) { 
 
    return args[0].map((_, i) => args.map(w => w[i]).join(delim)); 
 
} 
 

 
// Example 
 
var a = ["c", "y", "s", "h"], 
 
    b = ["a", "o", "e", "i"], 
 
    c = ["n", "u", "e", "m"]; 
 

 
var res = joinTransposed(' , ', a, b, c); 
 
console.log(res);