如何按降序对JSON数组元素进行排序?

2 javascript arrays json

在我的index.html 中,我从服务器接收数据,顺序如下:

[
  {id: 1, keyOne: valueOne, keyTwo: valueTwo},
  {id: 2, keyOne: valueOne, keyTwo: valueTwo},
  {id: 3, keyOne: valueOne, keyTwo: valueTwo},  
  {id: 4, keyOne: valueOne, keyTwo: valueTwo}
]
Run Code Online (Sandbox Code Playgroud)

我想按降序对其进行排序,例如:

[
  {id: 4, keyOne: valueOne, keyTwo: valueTwo},
  {id: 3, keyOne: valueOne, keyTwo: valueTwo},
  {id: 2, keyOne: valueOne, keyTwo: valueTwo},  
  {id: 1, keyOne: valueOne, keyTwo: valueTwo}
]
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 Stackoverflow 的多种方法,但找不到完美的匹配。我怎样才能做到这一点?

Shi*_*rsz 5

使用数组的sort()方法很容易做到这一点:

const input = [
    {id: 1, keyOne: "valueOne", keyTwo: "valueTwo"},
    {id: 2, keyOne: "valueOne", keyTwo: "valueTwo"},
    {id: 3, keyOne: "valueOne", keyTwo: "valueTwo"},
    {id: 4, keyOne: "valueOne", keyTwo: "valueTwo"}
];

let sortedInput = input.slice().sort((a, b) => b.id - a.id);
console.log(sortedInput);
Run Code Online (Sandbox Code Playgroud)
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Run Code Online (Sandbox Code Playgroud)

注意slice()方法的用法,调用slice()等于调用slice(0)对原始数组进行浅拷贝。这样,当sort()被调用时它不会改变原始input数组。