让我们有一个像这样的关联数组:
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/
)另一个循环?
答案 0 :(得分:15)
有没有简单/简短的方法如何在没有循环的情况下获取数组变量的数组??
是的,ECMAScript 5定义Object.keys
来执行此操作。大多数现代浏览器引擎都可能拥有它,旧版本不会,但它很容易填充(例如,this shim确实如此)。
如果是这样,另外,可以将一些正则表达式应用于键列表以获得与这种模式匹配的键(假设
/^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;
}
答案 1 :(得分:12)
JavaScript 1.8.5使用 Object.keys() 内置了此功能。它返回所有键的数组。您可以将垫片用于不受支持的浏览器(MDN has help on that too)。
作为示例,请参阅此(jsFiddle)...
var obj = { "cat" : "meow", "dog" : "woof"};
alert(Object.keys(obj)); // "cat,dog"