【发布时间】:2015-08-14 14:40:32
【问题描述】:
使用以下生成的数组示例结构,我如何循环并从每个对象中提取属性名称及其关联值?
[{"bg_2":"0.50"},{"bg_7":"0.10"},{"bg_12":"0.20"}]
对象的数量可能会发生变化,属性名称会不一致。
【问题讨论】:
标签: javascript arrays object
使用以下生成的数组示例结构,我如何循环并从每个对象中提取属性名称及其关联值?
[{"bg_2":"0.50"},{"bg_7":"0.10"},{"bg_12":"0.20"}]
对象的数量可能会发生变化,属性名称会不一致。
【问题讨论】:
标签: javascript arrays object
您可以使用Object.keys()[0]获取密钥,然后使用密钥获取值。
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 )
【讨论】:
扩展@AR7的answer,如果每个对象中可能有多个属性,您可以缓存Object.keys()返回的对象并循环遍历数组循环中的每个属性。
使用下面的方法,您可以处理对象中任意数量的属性。
我意识到在这种特定情况下,这可能不会比上述答案更有用,但希望它对未来的观众有用。
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]]);
});
【讨论】: