这个问题接近这个问题:Sort array of objects by string property value in JavaScript
但是,字段值应由用户选择(保存在sortBy
参数中):
function sortList (sortBy, list) {
return list.sort(function (val1, val2) {
if (val1.sortBy > val2.sortBy) {
return -1;
}
if (val1.sortBy < val2.sortBy) {
return 1;
}
return 0;
});
}
var myObj = [
{a: 1, b: 3},
{a: 3, b: 2},
{a: 2, b: 40},
{a: 4, b: 12}
];
sortList(myObj.a, myObj);
对象返回不变。
答案 0 :(得分:4)
你关闭了:
function sortList (sortBy, list) {
return list.sort(function (val1, val2) {
if (val1[sortBy] > val2[sortBy]) {
return -1;
}
if (val1[sortBy] < val2[sortBy]) {
return 1;
}
return 0;
});
}
var myObj = [
{a: 1, b: 3},
{a: 3, b: 2},
{a: 2, b: 40},
{a: 4, b: 12}
];
sortList("a", myObj);
如果要按某些计算值访问属性,请使用[ ]
运算符而不是.
。实际上,您的代码始终只查找名为&#34; sortBy&#34;的属性,并且忽略了传入的参数。