進出口試圖通過「姓名」項從對象/陣列中的項目進行排序,排序陣列通過從子陣列項值
我用參考此頁Sort array of objects和構建的一段代碼如下:
var alphabet = {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5,
f: 6,
g: 7,
h: 8,
i: 9,
j: 10,
k: 11,
l: 12,
m: 13,
n: 14,
o: 15,
p: 16,
q: 17,
r: 18,
s: 19,
t: 20,
u: 21,
v: 22,
w: 23,
x: 24,
y: 25,
z: 26
}
var test = {
item: {
name: "Name here",
email: "[email protected]"
},
item2: {
name: "Another name",
email: "[email protected]"
},
item3: {
name: "B name",
email: "[email protected]"
},
item4: {
name: "Z name",
email: "[email protected]"
}
};
test.sort(function (a, b) {return alphabet[a.name.charAt(0)] - alphabet[b.name.charAt(0)]});
console.log(test);
不幸的是沒有錯誤返回,並且console.log也沒有返回任何東西。 任何幫助,非常感謝!
編輯:答案已經給出 後,它似乎變量「試驗」需要是,然而,在外部庫動態地產生的可變的陣列,爲此我發這個小片的代碼。 如果任何人有同樣的問題,請隨時使用它。
var temp = [];
$.each(test, function(index, value){
temp.push(this);
});
//temp is the resulting array
沒有「排序」方法的對象 - 只有數組!如果你想對對象進行排序,最好的辦法就是將測試中的鍵映射到一個Array並從那裏調用'sort'。 – rjz 2012-04-15 23:34:28
您只按第一個字母排序。具有相同首字母的多個名稱將按半隨機排序。那是你要的嗎? – 2012-04-15 23:50:07