使用函数按值对JavaScript对象进行排序

Pra*_*ash 1 javascript arrays sorting function

所以,如果我有一个对象数组,如:

var a = [
  {
    name: "Apple",
    rank: 25
  },
  {
    name: "Cherry",
    rank: 29
  },
  {
    name: "Grape",
    rank: 15
  }
]
Run Code Online (Sandbox Code Playgroud)

有没有办法按等级对值进行排序,通过调用函数,我已尝试过它但仍然未定义:

function sorting(obj){
    obj.sort(function(a, b){
        return a[1] - b[1];
    })
}
Run Code Online (Sandbox Code Playgroud)

我正在努力找出我出错的地方,并且无法在MDN上找到任何有关此问题的文件.

任何帮助将非常感谢,提前感谢

ibr*_*rir 8

双方ab认为获得通过到sort的回调是从阵列的对象.如果你想访问他们的rank属性,你需要做的a.rank不是a[1].这两个a[1]b[1]undefined因为对象没有一个叫属性"1":

return a.rank - b.rank;
Run Code Online (Sandbox Code Playgroud)

例:

var arr = [{ name: "Apple", rank: 25 }, { name: "Cherry", rank: 29 }, { name: "Grape", rank: 15 }];

arr.sort(function(a, b) {
    return a.rank - b.rank;
});

console.log(arr);
Run Code Online (Sandbox Code Playgroud)

注意:要反转排序顺序,请执行以下操作:

return b.rank - a.rank;
Run Code Online (Sandbox Code Playgroud)