2016-05-03 5 views
3

Wenn ich ein Array von Elementen, zum Beispiel:Array "Mapping"

var names = ['Rita', 'Sarah', 'Lisa', 'Joe', 'Ralph', 'Linda', 'Richard', 'Chris']; 

Und ich habe eine Reihe von Zahlen, zum Beispiel:

var numbers = [2, 3, 5, 7]; 

Wie würde ich diese Nummern verwenden, um act als Bestellnummern, um bestimmte Namen zu erhalten?


Was ich damit meine?

haben eine Funktion, die diese zwei Arrays und gibt mir einen Ausgang nimmt:

output = ['Lisa', 'Joe', 'Linda', 'Chris']; 

Does JavaScript irgendwelche spezifischen Funktionen für das, oder brauche ich, um zu kodieren, selbst etwas?

+0

Hinweis: im JS-Index beginnt mit "0". Also wird '2' auf' Joe' und nicht 'Lisa' zeigen. – Rajesh

Antwort

6

Verwenden map() für die

var names = ['Sarah', 'Lisa', 'Joe', 'Ralph', 'Linda', 'Richard', 'Chris']; 
 
var numbers = [2, 3, 5, 7]; 
 

 
var res = numbers.map(function(v) { 
 
    return names[v - 1] 
 
}) 
 

 
// with ES6 arrow function 
 
// var res = numbers.map(v => names[v - 1]); 
 

 
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');


Oder mit filter()

var names = ['Sarah', 'Lisa', 'Joe', 'Ralph', 'Linda', 'Richard', 'Chris']; 
 
var numbers = [2, 3, 5, 7]; 
 

 
var res = names.filter(function(v, i) { 
 
    return numbers.indexOf(i + 1) > -1; 
 
}) 
 

 
// with ES6 arrow function 
 
// var res = numbers.filter((v, i) => numbers.indexOf(i + 1) > -1); 
 

 
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');

+0

Kann ich die gleiche Technik mit (JSON) -Objekten anpassen? Nur ein einzelnes Objekt, das dieselben Namen enthält. – N00b

+0

@ N00b: Wenn das Array Eigenschaftennamen enthält, dann können Sie ... –

+0

Hoppla, ich habe mich nicht klar genug gemacht .. So etwas wie '{0:' Sarah ', 1:' Lisa 'etc} ' – N00b