【问题标题】:Access generated properties with unknown property names in array of objects [duplicate]访问对象数组中具有未知属性名称的生成属性[重复]
【发布时间】:2015-08-14 14:40:32
【问题描述】:

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

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

对象的数量可能会发生变化,属性名称会不一致。

【问题讨论】:

    标签: javascript arrays object


    【解决方案1】:

    您可以使用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 )

    【讨论】:

    • 非常感谢。我一直在讨论这个问题,你的解决方案很完美。
    【解决方案2】:

    扩展@AR7的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]]);
    });

    【讨论】:

      猜你喜欢
      • 2013-11-21
      • 2019-09-03
      • 2015-08-05
      • 2018-10-18
      相关资源
      最近更新 更多