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

标签 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);

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

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

最佳答案

Is there any easy/short way how to get array of keys to array variable without loop..?

是的,ECMAScript 5 定义了 Object.keys去做这个。 (还有 Object.getOwnPropertyNames 甚至可以得到不可枚举的。)大多数现代浏览器引擎可能会有它,旧的浏览器引擎不会,但它很容易填充(例如,this shim 有)。

If so, additionally, is possible to apply some regular expression to key list to get just keys that match such pattern (let's say /^x/) without (another) loop?

不,没有内置的功能,但它是一个编写起来相当简单的函数:

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 上构建(并使用 ES2015+ 功能,因为我在 2020 年末写这部分):

function getKeys(obj, filter) {
    const keys = Object.keys(obj);
    return !filter ? keys : keys.filter(key => filter.test(key) && obj.hasOwnProperty(key));
}

关于Javascript::如何将关联数组的键获取到数组变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11561350/

相关文章:

php - 正则表达式 : how to match everythings that is not into a pattern?

regex - 使用正则表达式匹配冒号后的所有内容

ios - C 库中使用数组的 UnsafeMutablePointer

javascript - 在 Javascript 中使用 PHP 数组获取 Javascript 变量作为索引

javascript - google geocomplete 地点结果中的结果数量

javascript - Nodemon 重启运行 gulp 任务

javascript - 如何有选择地将鼠标事件传递给底层 svg 元素

javascript - 将 <tr> 文本加载到数组元素时出现问题

regex - 替换 Pandas 出生日期的前几位

java - 如何在数组JAVA中存储递归函数值