2014-02-04 5 views
1

У меня есть массивСоздать массив объектов JSON из массива значений

var names = ["bob", "joe", "jim"]; 

Как получить массив быть массив объектов, как так?

var nameObjs = [{"name":"bob"},{"name":"joe"},{"name":"jim"}]; 

Я пытался делать петлю и добавления {и} вручную, но цикл просто заканчивается добраться до большой, но я чувствую, что-то вроде JSON.stringify бы быть «правильный» способ сделать это.

+0

Что вы имеете в виду «петля просто заканчивается добраться до [так в оригинале] большой»? Почему бы вам не поделиться тем, что вы пробовали? –

ответ

2
var names = ["bob", "joe", "jim"]; 

var nameObjs = names.map(function(item) { 
    return { name: item }; 
}); 

Вы можете использовать JSON.stringfy на nameObjs, если вы на самом деле нужно JSON.

Вот fiddle

+0

Черт вас, отправил, пока я заканчивал печатать последние несколько символов этого точного ответа. – tenub

+0

@tenub: Случается со мной * все время *. –

1

Почему бы не это?

// Get your values however rou want, this is just a example 
var names = ["bob", "joe", "jim"]; 

//Initiate a empty array that holds the results 
var nameObjs = []; 

//Loop over input. 
for (var i = 0; i < names.length; i++) { 
    nameObjs.push({"name": names[i]}); //Pushes a object to the results with a key whose value is the value of the source at the current index 
} 
0

Самый простой способ я знаю это:

var names = ["bob", "joe", "jim"]; 
var namesObjs = [] 
for (var i = 0; i<names.length; i++) {namesObjs.push({name:names[i]})} 

Это с петлей, но не такой большой

Вы сделать функцию, чтобы сделать это:

function toObj(arr) { 
    obj=[]; 
    for (var i = 0; i<arr.length; i++) {obj.push({name:arr[i]})} 
    return obj; 
} 

Fiddle

0

Если вам не нужно names потом ...

var names = ["bob", "joe", "jim"], 
    nameObjs = []; 

while (names.length) { 
    nameObjs.push({ 
    'name': names.shift() 
    }); 
} 

или даже ...

var names = ["bob", "joe", "jim"], 
    n; 
for (n in names) { 
    names[n] = {'name': names[n]}; 
} 
Смежные вопросы