Javascript 迭代创建的动态对象

标签 javascript jquery object properties

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

<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>

最佳答案

问题是您对 Object.defineProperty 的使用.默认情况下,它将创建不可枚举 属性,顾名思义,这些属性不能被您的循环枚举。只需将 enumerable 属性添加到定义中即可:

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

这是一个 working version .

关于Javascript 迭代创建的动态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30390717/

相关文章:

java - 变量、对象和引用之间有什么区别?

javascript - 如何访问新创建的对象的变量?

javascript - 快速调用点击事件时随机出现类型错误

javascript - 在 FireBase 中使用 Where 查询精确对象

javascript - Vanilla Bootstrap 导航栏链接不可点击

jQuery 表单提交 - 如何追加数据?

Zabuto 日历中的 Javascript onclick 事件

javascript - 重新加载时 Chrome 中的垂直居中页面 "jumping",FF 和 IE 工作正常

javascript - 在 url 参数 javascript 中存储键值对列表。

javascript - 我可以以相反的顺序循环遍历 javascript 对象吗?