【问题标题】:Javascript Iterate on Dynamic Object CreatedJavascript迭代创建的动态对象
【发布时间】:2015-05-22 07:24:40
【问题描述】:

这是我的代码。问题在代码行中说明

<script>


    // sample data created
    var names = ['egard', 'roger'];

    // object k is populated with a key and dynamic values
    // depending on the list of names

    // declare a new object
    var k = {};

    // create k properties according to names data
    for (var i = 0; i < names.length; i++) {

        if (k.hasOwnProperty(names[i])) {
            k[names[i]] = false;
        } else {
            // value is dynamic, can be a number, char
            // that will be used for other purposes
            Object.defineProperty(k, names[i], {
                value : true,
                writable : true
            });
        }
    };



    // using jquery
    $.each(k, function (i, me) {
        // its not going here
        console.log('jquery', me);
    });

    // using native iteration
    for (var i in k) {
        // its not going here
        console.log('native', k[i]);
    }

    // what i want is to go inside the block
    // of $.each or for ()
    // so that i could iterate the object
    // keys and its assign value

    console.log(k);
    // will output
    Object {egard: true, roger: true}


 console.log(k.egard);
    // will output
    // true
</script>

【问题讨论】:

    标签: javascript jquery object properties


    【解决方案1】:

    问题在于您使用了Object.defineProperty。默认情况下,它将创建 non-enumerable 属性,顾名思义,您的循环无法枚举这些属性。只需将enumerable 属性添加到定义中:

    Object.defineProperty(k, names[i], {
      value : true,
      writable : true,
      enumerable : true
    });
    

    这是working version

    【讨论】:

    • @OliSoproniB。 - 没问题,很高兴我能帮上忙。
    【解决方案2】:

    你应该小心这两个键值,因为它们默认是false

    可配置 当且仅当此属性描述符的类型可以更改并且可以从相应对象中删除该属性时才为 true。 默认为 false。

    可枚举 当且仅当在枚举相应对象的属性期间显示此属性时才为 true。 默认为 false。

    【讨论】:

      猜你喜欢
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 2010-10-03
      • 2018-01-26
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多