2016-06-14 3 views
0

Я пытаюсь найти прочь зерноуборочные массивы вместе и возвращаю объект, используя loadash Ex:Объединение нескольких массивов с помощью loadash

var names = ['Franko','Dalia','Peter','Max'] 
var products = ['Mobile','Tv','Camera'] 
var result = [{ 
    'name':'Franko' 
    'product':'Mobile' 
},{ 
    'name':'Dalia' 
    'product':'Tv' 
},{ 
    'name':'Peter' 
    'product':'Camera' 
},{ 
    'name':'Max' 
    'product':'' 
}] 
+3

Возможный дубликат [lodash: как застегнуть массив объектов со значениями] (http://stackoverflow.com/questions/34309220/lodash-how-to-zip-an -array-of-objects-with-values) –

ответ

1

Почти как дубликат предложил Майк C, но с немного различными деталями, использовать zipWith:

var names = ['Franko','Dalia','Peter','Max']; 
 
var products = ['Mobile','Tv','Camera']; 
 

 
var result = _.zipWith(names, products, function(name, product) { 
 
    return {name: name, product: product || ''}; 
 
    }); 
 

 
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.11.2/lodash.min.js"></script>

1

простой раствор чистого JS здесь ...

var names = ['Franko','Dalia','Peter','Max'], 
 
products = ['Mobile','Tv','Camera'], 
 
    zipped = names.map((e,i) => ({name: e, product: products[i] || ""})); 
 
console.log(zipped);

+0

Это хрупкое. Что произойдет, если 'products' больше, чем' names'? (P.S., если вы используете функции ES2015, прекратите использование 'var') – Amit

+0

@Amit. Он не будет больше, чем длина массива' names'. – Redu

+0

... отсюда он хрупкий. – Amit