2016-05-12 4 views
1

zusammenführen Ich suche nach den besten Möglichkeiten, dies zu tun. Ich habe zwei Arrays:Wie zwei Arrays in ein Objekt mit lodash

key = [1,2,3]; 
value = ['value1', 'value2', 'value3'] 

Das Endergebnis ich will, ist ein Array von Karte:

[{key: 1, value: 'value1'} ,{key: 2, value: 'value2'}, {key: 3, value: 'value3'}] 

Wie mache ich es die effizienteste/saubere Art und Weise mit lodash? Danke!

Antwort

2

Hier ist, was Sie brauchen,

_.zipObject(key, value); 

Eigentlich ... nein.

reine Javascript können aber:

var result = key.map(function(val, index){ 
    return { key: val, value: value[index] }; 
}); 
+0

Wo zum Teufel von Schlüsseln zu kommen? –

+0

@ elad.chen: Schlüssel ist ein Array ... – dandavis

+0

@ elad.chen 'Schlüssel' ist der Schlüssel (ähem) Name wie OP endgültige Ergebnis er benötigt. – Wainage

2

Ich glaube, Ihre Frage here beantwortet wird.

const key = [1,2,3]; 
 
const value = ['value1', 'value2', 'value3'] 
 

 
const output = _.zipWith(key, value, (key, value)=> ({ key, value })); 
 

 
console.log(output); 
 
/* 
 
[ 
 
    { 
 
    "key": 1, 
 
    "value": "value1" 
 
    }, 
 
    { 
 
    "key": 2, 
 
    "value": "value2" 
 
    }, 
 
    { 
 
    "key": 3, 
 
    "value": "value3" 
 
    } 
 
] 
 
*/
<script src="https://cdn.jsdelivr.net/lodash/4.16.6/lodash.min.js"></script>

+1

Dies sollte als ein Duplikat gekennzeichnet werden (kann das nicht tun, bis Sie 15 rep haben, glaube ich). Aus diesem Grund würde dies am besten als Kommentar gepostet werden. – Bobby

+0

Eigentlich, nach dem Lesen des Duplikats, Gott sei Dank wurde dies von jemandem geschrieben, der es so sauber und schnell lesbar gemacht hat. Die Antwort in der Verbindung hat nur mein Gehirn durcheinander gebracht. – AndrewBenjamin

Verwandte Themen