Javascript::如何将关联数组的键获取到数组变量
Javascript :: How to get keys of associative array to array variable?
让我们有一个这样的关联数组:
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/
),而不需要另一个循环?
有没有什么简单/快捷的方法可以在没有循环的情况下获得数组变量的键数组。。?
是的,ECMAScript 5定义了Object.keys
来执行此操作。(还有Object.getOwnPropertyNames
,即使是不可枚举的。)大多数现代浏览器引擎可能会有它,旧的浏览器引擎不会,但它很容易填充(例如,这个填充)。
如果是这样的话,另外,是否可以将一些正则表达式应用到键列表中,只获得与这种模式匹配的键(比如
/^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;
}
或者在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));
}
在2020年 ,每个浏览器都支持这一点回到IE9。这就是要走的路
JavaScript 1.8.5在Object.keys()中内置了此功能。它返回所有键的数组。您可以为不受支持的浏览器使用填充程序(MDN也有这方面的帮助)。
举个例子,看看这个(jsFiddle)。。。
var obj = { "cat" : "meow", "dog" : "woof"};
alert(Object.keys(obj)); // "cat,dog"
相关文章:
- 从json子数组获取数据
- 从javascript数组获取php的日期时间
- 从表中的 JSON 数组获取数据
- 每个表的2D数组获取坐标JTSL,JAVASCRIPT
- javascript从元素到数组获取文本
- 如何从数组获取链接以在youtube Iframe API中播放
- JSON 编码多维数组获取值
- 如何从两个 JSON 数组获取增量
- 通过单击按钮数组获取隐藏 html 元素值的当前数组
- 在 JavaScript 中从内部数组获取数据
- 从数组获取非重复索引在 0 时失败
- JavaScript 从对象中的数组获取数组
- 如何通过 ajax 将 php 数组作为 javascript 数组获取
- 快速从 2D 数组获取索引,无需迭代 jquery
- 从 Nodejs socketio 数组获取所有套接字 id
- 无法动态从 json 数组获取数据
- 如何在javascript中使用数组获取和设置html标签的值
- jQuery对象数组获取一个项作为jQuery对象
- 如何在不向输出数组获取空值的情况下拆分字符串
- 从输入到数组获取数据