Javascript ::如何获取关联数组的键到数组变量?

问题描述 投票:7回答:2

让我们有一个像这样的关联数组:

var aArray = {};
aArray.id = 'test';
aArray['x1'] = [1,2,3];
aArray['stackoverflow'] = 'What\'s up?';
aArray['x2'] = [4,5,6];
var keys = [];
for(var key in aArray) {
  if (aArray.hasOwnProperty(key)) {
    keys.push(key);
  }
}
console.log(keys);

是否有任何简便的方法来获取没有循环的数组变量的键的数组?

如果是这样,另外,可以将一些正则表达式应用于键列表,以仅获取与这种模式匹配的键(让我们说吧/^x/,而无需另一个循环?

javascript regex arrays hash associative-array
2个回答
15
投票

有没有简单/快捷的方法,如何在没有循环的情况下将键的数组获取到数组变量中?

是,ECMAScript 5定义了Object.keys来执行此操作。大多数现代浏览器引擎可能会提供它,较旧的浏览器引擎不会提供,但是很容易填充(例如Object.keys会提供)。

如果是这样,另外,可以将一些正则表达式应用于键列表,以仅获得与这种模式匹配的键(例如this shim)而没有(另一个)循环?

不,没有内置功能。注意,这是编写的简单函数:

/^x/

13
投票

[2020年,每个浏览器都支持IE9。这是要走的路。

JavaScript 1.8.5内置了function getKeys(obj, filter) { var name, result = []; for (name in obj) { if ((!filter || filter.test(name)) && obj.hasOwnProperty(name)) { result[result.length] = name; } } return result; } 的功能。它返回所有键的数组。您可以对不支持的浏览器(Object.keys())使用填充程序。

作为示例,请参见此[MDN has help on that too)...

jsFiddle
© www.soinside.com 2019 - 2024. All rights reserved.