[英]How to sort associative array in Javascript?
我需要通過JS為我的一個項目排序關聯數組。 我發現這個函數在firefox中運行得很好,但不幸的是它在IE8,OPERA,CHROME中無法工作......無法找到使其在其他瀏覽器中工作的方法,或者找到適合其目的的另一個函數。 我非常感謝任何幫助。
function sortAssoc(aInput)
{
var aTemp = [];
for (var sKey in aInput) aTemp.push([sKey, aInput[sKey].length]);
aTemp.sort(function () {return arguments[0][1] < arguments[1][1]});
var aOutput = new Object();
//for (var nIndex = aTemp.length-1; nIndex >=0; nIndex--)
for (var nIndex = 0; nIndex <= aTemp.length-1; nIndex++)
aOutput[aTemp[nIndex][0]] = aInput[aTemp[nIndex][0]];
//aOutput[aTemp[nIndex][0]] = aTemp[nIndex][1];
return aOutput;
}
我知道這是一個老帖子但是工作:
問題是
aTemp.sort(function () {return arguments[0][1] < arguments[1][1]});
因為sort函數出現一個數字:
aTemp.sort(function (a, b) {
if (a[1] < b[1])
return 1;
else if (a[1] > b[1])
return -1;
else
return 0;
});
我最近遇到了這個問題,發現了這個問題。 我很失望地發現沒有預先定義的方法來對關聯數組進行排序,但它有意義並指出了我正確的方向。 我沒有完全意識到JS關聯數組實際上是對象,只是名稱中的數組。 我有一個包含更多關聯數組的關聯數組,例如:
var firstChild = {'id': 0, 'name': 'company Two'};
var secondChild = {'id': 1, 'name': 'company One'};
var parent = {
'company Two': firstChild,
'company One': secondChild
};
以下函數將根據它的鍵對上面的父數組進行排序。 為了使其按寫入方式工作,父數組需要與關聯數組中的值匹配的鍵。 例如,parent ['unique string']將需要一些包含'unique string'值的鍵值。 就我而言,這是名稱密鑰; 但是,您可以選擇任何您喜歡的鍵。
function associativeSort(givenArray, keyToSort) {
var results = [];
var temp = [];
for(var key in givenArray) {
temp.push(givenArray[key].name);
}
temp = temp.sort();
for(var x = 0; x < temp.length; x++) {
results[x] = givenArray[temp[x]];
}
return results;
}
給定我的示例數組,此函數將返回:
var parent = {
'company One': {'id': 1, 'name': 'company One'},
'company Two': {'id': 0, 'name': 'company Two'}
};
這是一個簡單的解決方案,但我花了一段時間才想到。 希望這有助於其他人面對這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.