Ste*_*nno 36 arrays jquery key
下午好.我有一个数组,其中包含一些键和值.然后我需要获取数组键而不是其中的数据.我想用jQuery做到这一点.我知道例如PHP有一个名为array_keys()的函数; 它将数组作为参数,并为每个索引中的每个键提供一个数组.
这就是我提出的,它的确有效......唯一的问题是它看起来如此无力;
var foo = [];
foo['alfa'] = "first item";
foo['beta'] = "second item";
for (var key in foo) {
console.log(key);
}
Run Code Online (Sandbox Code Playgroud)
这将输出;
alfa
beta
Run Code Online (Sandbox Code Playgroud)
但是有没有任何预定义的功能,如在PHP或任何其他更有效的方式获得这个?
dfa*_*dfa 63
你可以使用这个each功能:
var a = {};
a['alfa'] = 0;
a['beta'] = 1;
$.each(a, function(key, value) {
alert(key)
});
Run Code Online (Sandbox Code Playgroud)
它有几个不错的快捷键/技巧:在这里检查血腥细节
dug*_*tov 50
使用jQuery,从对象获取键数组的最简单方法如下:
$.map(obj, function(element,index) {return index})
Run Code Online (Sandbox Code Playgroud)
在您的情况下,它将返回此数组: ["alfa", "beta"]
And*_*ndy 28
console.log( Object.keys( {'a':1,'b':2} ) );
Run Code Online (Sandbox Code Playgroud)
为此使用对象(键/值对,最近的JavaScript必须为关联数组)而不是数组对象.除此之外,我相信这是最优雅的方式
var foo = {};
foo['alfa'] = "first item";
foo['beta'] = "second item";
for (var key in foo) {
console.log(key);
}
Run Code Online (Sandbox Code Playgroud)
注意:JavaScript不保证属性的任何特定顺序.所以你不能指望首先定义的属性首先出现,它可能是最后的.
编辑:
在回应您的评论时,我认为本文最好地总结了为什么不应该以这种方式使用JavaScript中的数组的情况 -
我知道OP特别提到了jQuery,但是我想在这里给出一个答案来向人们介绍有用的Underscore库,如果他们还没有意识到的话.
通过利用Underscore库中的keys方法,您可以简单地执行以下操作:
_.keys(foo) #=> ["alfa", "beta"]
Run Code Online (Sandbox Code Playgroud)
此外,还有许多值得细读的其他有用功能.
| 归档时间: |
|
| 查看次数: |
145766 次 |
| 最近记录: |