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

Ωme*_*ega 7 javascript regex arrays hash associative-array

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

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);
Run Code Online (Sandbox Code Playgroud)

有没有简单/简短的方法如何在没有循环的情况下获得数组变量键数组

如果是这样,另外,可以将一些正则表达式应用于键列表,以获得匹配这种模式的键(比方说 /^x/)而没有另一个循环?

T.J*_*der 15

有没有简单/简短的方法如何在没有循环的情况下获得数组变量的数组?

是的,ECMAScript 5定义Object.keys了这样做.大多数现代浏览器引擎可能会拥有它,旧版本不会,但它很容易填充(例如,这个垫片确实如此).

如果是这样,另外,可以将一些正则表达式应用于键列表,以便只获得匹配这种模式的键(假设/^x/)没有(另一个)循环?

不,没有内置功能.记住,写一个简单的函数:

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;
}
Run Code Online (Sandbox Code Playgroud)


sco*_*kel 12

JavaScript 1.8.5具有使用Object.keys()内置的此功能.它返回所有键数组.您可以将垫片用于不受支持的浏览器(MDN也对此有帮助).

作为一个例子看到这个(jsFiddle)......

var obj = { "cat" : "meow", "dog" : "woof"};
alert(Object.keys(obj)); // "cat,dog"
Run Code Online (Sandbox Code Playgroud)