2016-06-17 6 views
0

У меня есть JSON объект следующим образом:Получение свойства объекта JSON индексом

[ 
    { 
    "Under 10": "0", 
    "10-20": "1", 
    "20-30": "3", 
    "30-40": "2", 
    "40-50": "4", 
    "50-60": "4", 
    "60-70": "1", 
    "Above 70": "0" 
    } 
] 

Есть в любом случае получить доступ только отдельные свойства этого объекта? Я хочу сделать каждый из них отдельным объектом JSON. Я хочу, чтобы это выглядело как этот

[ 
    { 
    "Under 10": "0" 
    }, 
    { 
    "10-20": "1", 
    }, 
] 

Я попытался с помощью Oject.keys, но это не удалось. Я пробовал даже с функцией карты.

+0

Почему исходный объект представляет собой массив? Есть ли несколько объектов в этом массиве, и если да, то как должен выглядеть преобразованный результат? – Phil

+1

Кроме того, покажите, что вы пробовали и где у вас проблемы – Phil

+0

* «В любом случае, чтобы получить доступ к только отдельным свойствам этого объекта?» * Ну да, это точка объекта. Вы хотите реструктурировать, потому что считаете, что это необходимо для доступа к отдельным свойствам? –

ответ

2

Использование карты:

var obj = YOUR OBJECT... 

var a = Object.keys(obj[0]).map(function(key) { 
    return {[key]: obj[0][key]} 
}); 

демо-ролик: https://jsbin.com/mapoqo/1/edit?js,console

+0

Это прекрасно работает. Если бы я хотел сделать их отдельными массивами вместо объектов JSON, что вы предлагаете делать? – RJP

+0

Что именно вы имеете в виду, и массив вроде: [ключ, значение]? что именно будет выглядеть этот вывод? – JordanHendrix

+0

что-то вроде этого [ [ "Under 10", "5" ], [ "10-20", "3" ], [ "20-30", "3" ] ] – RJP

3

Вы можете использовать Object.getOwnPropertyNames() или Object.keys(). Первый возвращает все собственные свойства, а позже немного конкретнее и возвращает только перечислимые. Однако для JSON это не имеет значения.

var json = [ 
 
    { 
 
    "Under 10": "0", 
 
    "10-20": "1", 
 
    "20-30": "3", 
 
    "30-40": "2", 
 
    "40-50": "4", 
 
    "50-60": "4", 
 
    "60-70": "1", 
 
    "Above 70": "0" 
 
    } 
 
]; 
 

 
var result = Object.getOwnPropertyNames(json[0]).map(name => ({[name]: json[0][name]})); 
 

 
console.log(result);

0

Для достижения вашего ожидаемого результата, ниже вариант может помочь вам

 var x = [ 
    { 
     "Under 10": "0", 
     "10-20": "1", 
     "20-30": "3", 
     "30-40": "2", 
     "40-50": "4", 
     "50-60": "4", 
     "60-70": "1", 
     "Above 70": "0" 
    }] 
    ; 

    var keys =Object.keys(x[0]); 
    var final=[]; 

    for(i=0;i< keys.length;i++){ 
    final[i] = '[{'+keys[i]+':'+x[0][keys[i]]+'}]'; 

    } 


    console.log(final);//final array will have expected result 

Codepen- http://codepen.io/nagasai/pen/KMMbMm

0

оригинальный JSON является массив, и мы должны преобразовать первый объект в массиве в новый массив. Как ниже,

// Original JSON, an Array. 
var raw = [ 
    { 
    "Under 10": "0", 
    "10-20": "1", 
    "20-30": "3", 
    "30-40": "2", 
    "40-50": "4", 
    "50-60": "4", 
    "60-70": "1", 
    "Above 70": "0" 
    } 
]; 

// The first Object in original JSON(an Array). 
var oldObject = raw[0]; 

// New Array stores the Objects you want. 
var newArray = []; 

// Get each item in oldObject 
for(var key in oldObject) { 

    // Create a new Object 
    var obj = {}; 

    // Assign the value of key of oldObject to obj[key]. 
    // Like obj["Under 10"] = "0". 
    obj[key] = oldObject[key]; 

    // Append obj to newArray. 
    newArray.push(obj); 

} 

Во всяком случае, newArray является то, что вам нужно. Cheers :)

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