开发者社区> 问答> 正文

怎样可以获取对象属性的索引?

比如 opt 是一个对象,然后设置属性:

var opt = {
  set1:"1",
  set2:"2",
  set3:"2"
}

可以直接将opt直接取到索引 还是将里面的属性取出来为数组取。

展开
收起
小旋风柴进 2016-03-24 13:20:05 1934 0
1 条回答
写回答
取消 提交回答
  • 直接读到 key 无法用原生 JS 实现,比较常规的做法是用 for..in 循环:

    var opts = { set1: "1", set2: "2", set3: "3" },
        keys = [];
    
    for (key in opts) {
        keys.push(key);
    }
    
    keys[0];    // "set1"
    keys[1];    // "set2"
    keys[2];    // "set3"

    但是这里面有坑,因为很多时候你不知道 key 是目标对象自己的,还是通过原型继承来的,所以一般都要做一层判断,只要目标对象自己的:

    for (key in opts) {
        if (opts.hasOwnProperty(key) {
            keys.push(key);
        }
    }

    好消息是 ES5 增加了 Object.keys 方法,直接获取对象自己的所有键,返回数组:

    var keys = Object.keys(opts);
    再进一步的判断比如 可枚举 之类的,你没问,我就不啰嗦了,欢迎其他人补充。

    2019-07-17 19:12:39
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载