2015-08-14 3 views
6

Используя следующую структуру примеров сгенерированных массивов, как я могу прокручивать и извлекать имена свойств и связанные с ними значения из каждого объекта?Доступ к свойствам с неизвестными именами свойств в массиве объектов

[{"bg_2":"0.50"},{"bg_7":"0.10"},{"bg_12":"0.20"}] 

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

ответ

6

Вы можете использовать Object.keys()[0], чтобы получить ключ, а затем используйте ключ, чтобы получить значение.

JSFiddle

var myData = [{"bg_2":"0.50"},{"bg_7":"0.10"},{"bg_12":"0.20"}]; 
 

 
for (var i = 0; i < myData.length; i++) { 
 
    var myObject = myData[i]; 
 
    var firstKey = Object.keys(myObject)[0]; 
 
    var value = myObject[firstKey]; 
 

 
    console.log(firstKey + ": " + value); 
 
}

Смотрите также: ECMAScript® Language Specification: 15.2.3.14 Object.keys (O)

+0

спасибо. Я собирался в кругах по этому вопросу, и ваше решение идеально. – dijon

3

Расширяя @AR7 «s answer, в том случае, когда может быть несколько свойств в каждом из объектов можно кэшировать объект, возвращаемый Object.keys(), и перебирает каждое свойство в цикле массива.

Используя приведенный ниже метод, вы можете обрабатывать любое количество свойств внутри объекта.

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

JSFiddle

var a = [ 
 
    { "bg_2":"0.50", "bg_7":"0.10", "bg_12":"0.20"}, 
 
    { "bg_2":"0.50", "bg_7":"0.10"}, 
 
    { "bg_2":"0.50"} 
 
]; 
 

 
a.forEach(function(o){ 
 
    console.log(o); 
 
    var k = Object.keys(o); 
 
    for(var i in k) 
 
     console.log(k[i], ':', o[k[i]]); 
 
});

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