JavascriptでObject(ハッシュ)のキーでソート[JavaScript]

通常の配列

通常の配列はsort(),reverse()を使うべし。

var arr = [3,5,1,6,3,4,6,3,6,7,4];
alert(arr);
//昇順
arr.sort();
alert(arr);
//降順
arr.reverse();
alert(arr);

ハッシュをキーでソートする

//keyでソートする
function keySort(hash,sort){
	var sortFunc = sort || reverse;
	var keys = [];
	var newHash = {};
	for (var k in hash) keys.push(k);
	keys[sortFunc]();
	var length = keys.length;
	for(var i = 0; i < length; i++){
		newHash[keys[i]] = hash[keys[i]];
	}
	return newHash;	
}

//テストデータ
var hash = {
	"e":55,
	"f":66,
	"g":77,
	"name":88,
	"a":11,
	"b":22,
	"c":33,
	"d":44
};

/*
 * テスト
 */
//元のハッシュ
var str = "元のハッシュ\n";
for(var k in hash) str += "key:" + k + " val:" + hash[k] + "\n";
alert(str);

//昇順(デフォルト)でソート
hash = keySort(hash);
str = "昇順\n";
for(var k in hash) str += "key:" + k + " val:" + hash[k] + "\n";
alert(str);

//降順でソート
hash = keySort(hash,"reverse");
str = "降順\n";
for(var k in hash) str += "key:" + k + " val:" + hash[k] + "\n";
alert(str);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です