访问对象数组中具有未知属性名称的生成属性

Access generated properties with unknown property names in array of objects

本文关键字:属性 未知 数组 对象 访问      更新时间:2023-09-26

使用下面生成的数组示例结构,我如何从每个对象中循环并提取属性名称及其相关值?

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

对象的数量可能会改变,并且属性名称将不一致。

您可以使用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®语言规范:15.2.3.14对象。

扩展@AR7的答案,在每个对象中可能有多个属性的情况下,您可以缓存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]]);
});