2014-12-04 11 views
0

Как лучше всего преобразовать json-файл в другой формат? Я читал о методе «карта», но не знаю, как его использовать.Преобразование json-файла в другой формат

[{"Southern":"9"},{"South-West":"83"},{"South-East":"448"},{"Western":"638"},{"North-Western":"706"},{"Eastern":"710"},{"North-East":"1055"}] 

Я хотел бы преобразовать:

 [ 
      ['Southern', 9], 
      ['South-West', 83],     
      ['South-East', 448], 
      ['Western', 638], 
      ['North-Western', 706], 
      ['Eastern', 710], 
      ['North-East', 1055], 

     ] 

Код:

data.map(function(e) { 
    .......... 
    }); 
+0

Вы уверены, что хотите массив массивов? Будет что-то вроде «{« Южный »: 9,« Юго-Запад »: 83}« не более практичным? – Tomalak

ответ

4
newData = data.map(function(e) { 
    var key = Object.keys(e)[0]; 
    return [ key, parseInt(e[key], 10) ]; 
}); 

Тем не менее, кажется, что было бы полезно, если бы вы превратили его в один объект:

{ 
    'Southern': 9, 
    'South-West': 83, 
    'South-East': 448, 
    'Western': 638, 
    'North-Western': 706 
    'Eastern': 710 
    'North-East': 1055 
} 

Это может быть сделано с:

newObject = {}; 
data.forEach(function(e) { 
    var key = Object.keys(e)[0]; 
    newObject[key] = e[key]; 
}); 
1

Если вы не хотите использовать карту, которую вы можете использовать простой цикл:

var result = []; 
for (var i = 0, l = arr.length; i < l; i++) { 
    var key = Object.keys(arr[i])[0]; 
    var val = parseInt(arr[i][key], 10); 
    result.push([key, val]) 
} 

DEMO

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