当前位置:  开发笔记 > 编程语言 > 正文

获取关联数组键列表

如何解决《获取关联数组键列表》经验,为你挑选了4个好方法。

我在Javascript中有一个关联数组:

var dictionary = {
    "cats": [1,2,3,4,5], 
    "dogs": [6,7,8,9,10]
};

我如何获得这本词典的密钥?即我想要

var keys = ["cats", "dogs"];

编辑7年后:只是为了使术语正确 - 在Javascript中没有"关联数组"这一点 - 这在技术上只是一个object,它是我们想要的对象键.



1> JW...:

试试这个:

var keys = [];
for (var key in dictionary) {
  if (dictionary.hasOwnProperty(key)) {
    keys.push(key);
  }
}

hasOwnProperty是必要的,因为可以将键插入到原型对象中dictionary.但是您通常不希望列表中包含这些键.

例如,如果您这样做:

Object.prototype.c = 3;
var dictionary = {a: 1, b: 2};

然后做一个for...in循环了dictionary,你会得到ab,但你也将获得c.


@mzalazar,你最好做或者它将是一个全局变量,这是不好的做法.
@mzalazar,但如果你只是使用`keys.push(key);`那么你就不会在任何时候声明它(**键**).你只是从全局命名空间中提取(并因此声明它).:)

2> wombleton..:
for (var key in dictionary) {
  // do something with key
}

这是for..in声明.


检查`dictionary.hasOwnProperty(key)`非常重要,否则你可能会得到原型链中的方法.
来自同一篇文章:_以任意顺序迭代对象的可枚举属性.如果键顺序很重要,则需要执行以下操作:例如将它们推入数组,对其进行排序,然后使用for()循环从已排序的数组中获取用于索引原始对象的键.

3> 小智..:

您可以使用: Object.keys(obj)

例:

var dictionary = {
  "cats": [1, 2, 37, 38, 40, 32, 33, 35, 39, 36],
  "dogs": [4, 5, 6, 3, 2]
};

// Get the keys
var keys = Object.keys(dictionary);

console.log(keys);


4> Jesse..:

只是一个简单的注释,警惕使用for..in如果你使用一个库(jQuery,原型等),因为他们中的大多数都添加了创建对象(包括字典)的方法.

这意味着当您遍历它们时,方法名称将显示为键.如果您使用的是库,请查看文档并查找可枚举的部分,您可以在其中找到用于迭代对象的正确方法.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有