如何使用jQuery获取数组键?

0lvr5msh  于 2023-01-04  发布在  jQuery
关注(0)|答案(6)|浏览(198)

下午好。我有一个数组,里面有一些键和值。然后我需要获取数组键,而不是其中的数据。我想用jQuery来做这件事。例如,我知道PHP有一个函数array_keys();它将数组作为参数,返回一个数组,其中包含每个索引中的每个键。
这是我想出来的,而且很有效...唯一的问题是它看起来太低效了;

var foo = [];
foo['alfa'] = "first item";
foo['beta'] = "second item";

for (var key in foo) {
    console.log(key);
}

这将输出;

alfa
beta

但是,是否有任何预定义的函数,如在PHP或任何其他更有效的方式来获得这一点?

bweufnob

bweufnob1#

可以使用each函数:

var a = {};
a['alfa'] = 0;
a['beta'] = 1;
$.each(a, function(key, value) {
      alert(key)
});

它有几个不错的快捷方式/技巧:check the gory details here

dgsult0t

dgsult0t2#

使用jQuery,从对象获取键数组的最简单方法如下:

$.map(obj, function(element,index) {return index})

在您的示例中,它将返回以下数组:第一个月

xv8emn3q

xv8emn3q3#

在现代浏览器中,获取数组键的最简单方法是Object.keys()

console.log( Object.keys( {'a':1,'b':2} ) );
u91tlkcl

u91tlkcl4#

不要重新发明轮子,使用Underscore

  • 我知道OP特别提到了jQuery,但我想在这里给出答案,向人们介绍有用的Underscore库(如果他们还不知道的话)。*

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

_.keys(foo)  #=> ["alfa", "beta"]

另外,还有很多其他有用的函数值得细读。

vybvopom

vybvopom5#

使用一个对象(键/值对,最接近于关联数组的JavaScript)来表示这个对象,而不是数组对象。

var foo = {};
foo['alfa'] = "first item";
foo['beta'] = "second item";

for (var key in foo) {
        console.log(key);
}
  • 注意:JavaScript不保证属性的任何特定顺序。因此,您不能期望最先定义的属性最先出现,它可能最后出现。*
    • 编辑:**

作为对您评论的回应,我相信本文最好地总结了JavaScript中数组不应该以这种方式使用的原因-

      • 一个
tyg4sfes

tyg4sfes6#

我用我创建的这个函数...

Object.getKeys = function(obj, add) {
    if(obj === undefined || obj === null) {
        return undefined;
    }
    var keys = [];
    if(add !== undefined) {
        keys = jQuery.merge(keys, add);
    }
    for(key in obj) {
        if(obj.hasOwnProperty(key)) {
                keys.push(key);
        }
    }
    return keys;
};

我认为你可以在第一次测试中将obj设置为self或更好的值。有时候我似乎也在检查它是否为空,所以我这样做了。而且我不认为{}是Object.*,或者至少这样在Object上查找函数getKeys有问题。也许你应该先放置prototype,但这似乎会导致与GreenSock等的冲突。

相关问题