0

キーを使用して値を取得し、キーを反復処理できるオブジェクトを JavaScript で作成する必要があります。主な要件はキーごとに値をフェッチすることですが、値 (整数) によるエントリの並べ替え順序を維持するには反復が必要です。

このようなオブジェクトを作成するにはどうすればよいですか?

4

3 に答える 3

1
  1. JavaScript のすべてのオブジェクトは JSONeable です! (それは本当に言葉ですか)。
  2. JavaScript のすべてのオブジェクトは、キーと値のマッピングのコレクションです。
  3. for inループは、オブジェクトのキーを繰り返します。
于 2012-09-24T05:29:48.737 に答える
1
sampleJson={
"1":"john",
"2":"johny"
}

ループ内で for を使用して反復できます

for(key in sampleJson){
//ur code
}
于 2012-09-24T05:33:14.923 に答える
0

ネイティブ オブジェクトは、探しているものを正確にサポートしていませんが、追加機能を提供するネイティブ オブジェクトのラッパーを作成するのはかなり簡単です。

可能なアプローチ:

function KeySortArr(obj) {
    this.obj = obj || {};
}

KeySortArr.prototype = {
    get: function(key) {
        return this.obj[key];
    },

    set: function(key, value) {
        this.obj[key] = value;
    },

    keys: function() {
        var keys = [];
        for(var i in this.obj) {
            if (this.obj.hasOwnProperty(i))
                keys.push(i);
        }
        return keys;
    },

    getKeysSortedByValue: function() {
        var obj = this.obj;
        return this.keys().sort(function(a, b) {
            return obj[a] > obj[b];
        });
    }
};

使用法:

var arr = new KeySortArr();
arr.set("test", 4);
arr.set("another", 2);
arr.set("ok", 60);
arr.set("last", 14);

次に、次のとおりです。

arr.getKeysSortedByValue();

戻り値:

["another, "test", "last", "ok"]

つまり、キーは関連する値によってソートされます。これはまさにあなたが探していたものではないかもしれませんが、それに近いはずです。

于 2012-09-24T06:44:19.767 に答える