2015-11-04 5 views
-2

Я получаю массив строк из сервера в следующем формате:Преобразование строки в массив с объектами

var fruitsStrings = ["apple", "banana", "orange" ]; 

Можно ли преобразовать это в массив объектов, как показано ниже?

var fruitsObjects = [ 
    { 
     fruit: "apple" 
    }, 
    { 
     fruit: "banana" 
    }, 
    { 
     fruit: "orange" 
    } 
]; 

Все свойства объекта будут одинаковыми. Счастливый использовать чистый JavaScript или jQuery. Я пробовал использовать jquery.extend, но поскольку это добавляет уникальные идентификаторы перед каждым значением, это не очень подходит для моей цели.

спасибо.

+7

[ 'Array.prototype.map()'] (https://developer.mozilla.org/en -US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) -> 'fruitsObjects = fruitsStrings.map (function (fruit) {return {" fruit ": fruit};})' – Andreas

ответ

1

вы можете использовать .map

var fruitsStrings = ["apple", "banana", "orange" ]; 
var fruitsObjects = fruitsStrings.map(function(val, i) { 
    return {fruit:val}; 
}); 
document.write(JSON.stringify(fruitsObjects)); 

var fruitsStrings = ["apple", "banana", "orange" ]; 
 
var fruitsObjects = fruitsStrings.map(function(val, i) { 
 
    return {fruit:val}; 
 
}); 
 
document.write(JSON.stringify(fruitsObjects));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

1
var fruitsStrings = ["apple", "banana", "orange" ]; 
var fruitsObjects = []; 

fruitsStrings.forEach(function (item) { 
    fruitsObjects.push({ fruit: item }); 
}); 

Working demo.

1

Попробуйте это:

var fruitsStrings = ["apple", "banana", "orange" ]; 
var fruitsObjects = []; 

$.map(fruitsStrings, function(val, i) { 
    fruitsObjects.push({ fruits: val }); 
}); 
1

Простой Array.prototype.map будет делать:

var fruitsStrings = ["apple", "banana", "orange"], 
 
    fruitsArray = fruitsStrings.map(function (a) { return { fruit: a } }); 
 
document.write('<pre>' + JSON.stringify(fruitsArray, 0, 4) + '</pre>');

1

Вы также можете использовать эту функцию, где вы можете указать ключ.

function toObjects(key,arr) { 
    var objects = []; 
    for (var i = 0; i < arr.length; ++i){ 
    var obj = {}; 
    obj[key] = arr[i]; 
    objects[i] = obj; 
    } 
    return objects; 
} 
var fruitsStrings = ["apple", "banana", "orange" ]; 
toObjects('fruit',fruitsStrings); 
// [{fruit: "apple"},{fruit: "banana"},{fruit: "orange"}] 
1

Попробуйте это:

var fruitsStrings = ["apple", "banana", "orange" ]; 
var fruitsObjects = []; 

fruitsStrings.map(function(v,i){ 
    fruitsObjects.push({'fruit':v}); 
}); 

console.log(fruitsObjects); 

Working Demo

Смежные вопросы