キーを使用して値を取得し、キーを反復処理できるオブジェクトを JavaScript で作成する必要があります。主な要件はキーごとに値をフェッチすることですが、値 (整数) によるエントリの並べ替え順序を維持するには反復が必要です。
このようなオブジェクトを作成するにはどうすればよいですか?
キーを使用して値を取得し、キーを反復処理できるオブジェクトを JavaScript で作成する必要があります。主な要件はキーごとに値をフェッチすることですが、値 (整数) によるエントリの並べ替え順序を維持するには反復が必要です。
このようなオブジェクトを作成するにはどうすればよいですか?
for
in
ループは、オブジェクトのキーを繰り返します。sampleJson={
"1":"john",
"2":"johny"
}
ループ内で for を使用して反復できます
for(key in sampleJson){
//ur code
}
ネイティブ オブジェクトは、探しているものを正確にサポートしていませんが、追加機能を提供するネイティブ オブジェクトのラッパーを作成するのはかなり簡単です。
可能なアプローチ:
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"]
つまり、キーは関連する値によってソートされます。これはまさにあなたが探していたものではないかもしれませんが、それに近いはずです。