Ich habe 3 Arrays

var arr1 = ["2", "3", "1"],
    arr2 = ["x", "y", "z"],
    arr3 = [];

Wie kann ich Elemente von arr2 in arr3 gemäß der arr1 Nummernreihenfolge aufrufen? Beispiel:

arr3 = ["y", "z", "x"];
2
Fergoso 11 Aug. 2015 im 07:58

3 Antworten

Beste Antwort

Für 0 indizierte Array-Nummern

for(var i = 0; i < arr1.length; i++){
   arr3.push(arr2[arr1[i]])
}

Oder da Sie 1 indiziertes Array verwenden

for(var i = 0; i < arr1.length; i++){
   arr3.push(arr2[arr1[i] - 1])
}
4
DGS 11 Aug. 2015 im 05:05

Wenn die Werte von arr1 nicht mit Schlüsseln übereinstimmen, wie wenn arr1 = [50, 4, -2, 999], dann ist hier eine verschlungene Antwort:

arr1.map(function(val, key){ return [val, key] })
    .sort(function(a,b){ return a[0]-b[0] })
    .map(function(a){ return arr2[a[1]] })
0
Frambot 11 Aug. 2015 im 06:06

Sie können so etwas ausprobieren:

var arr1 = ["2", "3", "1"],
    arr2 = ["x", "y", "z"],
    arr3 = [];
arr3=arr1.map(function(i){return arr2[i-1]}); 
console.log(arr3)
0
Roli Agrawal 11 Aug. 2015 im 06:01