我有以下信息:
Name, GPA 2010, GPA 2011
Adam, [2010, 3.4], [2011, 3.9]
Ben, [2010, 3.4], [2011, 3.9]
Charlie, [2010, 3.4], [2011, 3.9]
我希望能够做到以下几点:
用于此类排序的最经济的JavaScript数据结构是什么?
目前我有这个:
var grades = {
'Adam': [[2010, 3.4], [2011, 3.9]],
'Ben' : [[2010, 3.4], [2011, 3.9]],
'Charlie' : [[2010, 3.4], [2011, 3.9]] };
这样可以轻松实现第4点(if (name in grades === false)
)和reasonably easy以达到第1点,但很容易实现第2点或第3点。
答案 0 :(得分:1)
考虑一下:
var grades = [
{
'name': 'Adam',
'2010': 3.4,
'2011': 3.9
},
{
'name': 'Ben',
'2010': 3.4,
'2011': 3.9
}
];
排序:
function compareNames(a, b) {
var nameA = a.name.toLowerCase( );
var nameB = b.name.toLowerCase( );
if (nameA < nameB) {return -1}
if (nameA > nameB) {return 1}
return 0;
}
function compareGPAs(year) {
return function(a, b) {
return a.year - b.year;
}
}
// sort by name
grades.sort(compareNames);
// sort by GPA of 2010
grades.sort(compareGPAs('2010'));