40

こんにちは。いくつかのキーと値を含む配列があります。次に、データではなく配列キーを取得する必要があります。これを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 またはこれを取得する他のより効果的な方法のように、これに対して定義済みの関数はありますか?

4

6 に答える 6

67

each次の関数を使用できます。

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

それはいくつかの素晴らしいショートカット/トリックを持っています:ここで残酷な詳細をチェックしてください

于 2009-08-10T11:04:44.023 に答える
51

jQuery を使用して、オブジェクトからキーの配列を取得する最も簡単な方法は次のとおりです。

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

あなたの場合、次の配列が返されます。["alfa", "beta"]

于 2013-03-20T12:15:23.130 に答える
33
console.log( Object.keys( {'a':1,'b':2} ) );
于 2012-03-28T17:58:13.620 に答える
6

車輪を再発明しないでください。アンダースコアを使用してください

OPがjQueryに具体的に言及していることは知っていますが、まだ気付いていない場合に役立つUnderscoreライブラリを人々に紹介するために、ここに回答を入れたいと思いました。

Underscore ライブラリkeysのメソッドを利用することで、次のことを簡単に実行できます。

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

さらに、熟読する価値のある他の便利な機能がたくさんあります。

于 2014-09-25T18:34:33.517 に答える
5

これには、配列オブジェクトではなく、オブジェクト (キーと値のペア、最も近い JavaScript は連想配列) を使用します。それ以外は、それが最もエレガントな方法だと思います

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

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

注: JavaScript は、プロパティの特定の順序を保証しません。そのため、最初に定義されたプロパティが最初に表示されるとは期待できず、最後になる可能性があります。

編集:

あなたのコメントに応えて、JavaScript の配列をこのように使用してはならない理由について、この記事が最もよくまとめられていると思います。

于 2009-08-10T10:53:32.813 に答える