如何使用jQuery获取数组键?

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)

它有几个不错的快捷键/技巧:在这里检查血腥细节

  • $ .each()在内部用于对象是什么?!此方法将更慢,因为使用回调函数将增加作用域链的长度,因此需要更长时间来解析对属性的引用 (2认同)
  • 不要忘记使用弧形括号而不是方括号来定义数组! (2认同)

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 1.8.5+有关浏览器支持,请参阅此处页面底部的表格:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys (11认同)

Rus*_*Cam 6

为此使用对象(键/值对,最近的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中的数组的情况 -


Jos*_*ter 5

不要重新发明轮子,使用下划线

我知道OP特别提到了jQuery,但是我想在这里给出一个答案来向人们介绍有用的Underscore库,如果他们还没有意识到的话.

通过利用Underscore库中keys方法,您可以简单地执行以下操作:

_.keys(foo)  #=> ["alfa", "beta"]
Run Code Online (Sandbox Code Playgroud)

此外,还有许多值得细读的其他有用功能.