2016-04-24 2 views
2

Предположим, у меня есть эти данные:Как преобразовать значения в массив объектов

var id = 81; 
var categories = [1, 2, 3, 4, 5]; 

Как превратить это в:

[{id: 81, category: 1}, {id: 81, category: 2}, {id: 81, category: 3}, {id: 81, category: 4}, {id: 81, category: 5}] 

Есть элегантный способ сделать это с помощью подчеркивания или lodash ?

ответ

9

Здесь нет необходимости в библиотеках.

const result = categories.map(x => ({ id, category: x })) 
+1

Спасибо за показ стенографии обозначение для 'id'. – strah

2

Working Example JSBin

var id = 81; 
var categories = [1, 2, 3, 4, 5]; 
var arr = []; 

for (var i = 0; i < categories.length; i++) { 
    arr.push({id: id, category: categories[i]}); 
} 

Или:

var a = categories.map(function(a) { 
    return {id: id, category: a}; 
}); 
1

Вам не нужна библиотека, просто хороший, старый Vanilla JS.

var newArray = categories.map(function(item) { 
    return {id: id, cetegory: item} 
}); 
+0

Ирония: Vanilla.js - это библиотека, * 0-байтная библиотека *. – 4castle

+0

Если вы имеете в виду следующее: http://vanilla-js.com/, чем хорошо ... это шутка :-) – strah

1

Использование Lo-тире/подчеркивания, код будет:

var result = _.map(categories, x => ({ id, category: x })); 

Но это на самом деле больше, чем чистый раствор JS (from Роман Парадеев):

var result = categories.map(x => ({ id, category: x }));