2014-01-17 5 views
4

Это, вероятно, простое решение, но я не могу заставить его работать:/ Я хочу создать новый «ответ» из результатов, собранных через json/api call.javascript создать новый массив из результатов json

jsonResponse = [ 
    {"_id":"1","desc":"test desc","title":"Title 1"}, 
    {"_id":"2","title":"Title 2","desc":"desc 2"} 
    ]; 

Мне нужно создать новый массив из этого, который выглядит следующим образом:

var newResponse = [ 
    { "heading" : "Title 1", "summary" : "test desc"}, 
    { "heading" : "Title 2", "summary" : "desc 2"} 

]; 

Снятие и замена ключа. Как я могу это сделать?

ответ

8

Array.prototype.map функция творит чудеса:

var newResponse = jsonResponse.map(function(item){ 
    return { heading : item.title, summary : item.desc }; 
}); 
+0

Вот вам требуется http://jsfiddle.net/c57SE/ –

+0

ES5. Это не будет работать в старых браузерах. Если это вызывает беспокойство. –

+0

@SaintGerbil Это объясняется в ссылке, которую я дал, в разделе Совместимость с браузером. Существует также полиполк, доступный для браузеров, которые не реализуют Array.prototype.map. – Tibos

4

Использование Array.prototype.map является отличным решением, но если вы хотите поддерживать старые браузеры, вы можете использовать либо map polyfill, или сделать это:

var newData = function() { 
    var myArray = []; 
    for (var i = 0; i < JSON.length; i++) { 
     var self = JSON[i]; 
     myArray.push({ 
      heading: self.title, 
      summary: self.desc 
     }); 
    } 
    return myArray; 
}; 

// output 
newData(); 

Вот мой jsFiddle

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