如何按降序对 JSON 数组元素进行排序? [复制]
Posted
技术标签:
【中文标题】如何按降序对 JSON 数组元素进行排序? [复制]【英文标题】:How to sort JSON array elements in descending order? [duplicate] 【发布时间】:2019-06-06 16:42:53 【问题描述】:在我的 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
]
我想按降序排序,比如:
[
id: 4, keyOne: valueOne, keyTwo: valueTwo,
id: 3, keyOne: valueOne, keyTwo: valueTwo,
id: 2, keyOne: valueOne, keyTwo: valueTwo,
id: 1, keyOne: valueOne, keyTwo: valueTwo
]
我从 *** 尝试了多种方法,但找不到完美匹配。我该怎么做?
【问题讨论】:
你试过什么没用? 【参考方案1】:使用数组的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);
.as-console background-color:black !important; color:lime;
.as-console-wrapper max-height:100% !important; top:0;
注意slice()方法的使用,调用slice()
等于调用slice(0)
对原始数组进行浅拷贝。这样,当sort()
被调用时,它不会改变原始的input
数组。
【讨论】:
请注意,排序也发生在“原地”,因此input
变量也会被修改。有关详细信息,请参阅mdn - sort。
感谢您的反馈,已更新为不触及原始输入。无论如何,他没有说不改变输入。【参考方案2】:
见https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Global_Objects/Array/sort
my_array.sort(function(a, b)
if (a.id > b.id) return -1;
else if (a.id < b.id) return 1;
else return 0;
);
【讨论】:
【参考方案3】:const JsonArray= [
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 JsonReversedArray= JsonArray.reverse();
console.log(JsonReversedArray);
反转对象数组中元素的顺序
但这在这种情况下不起作用
const JsonArray= [
id: 1, keyOne: "valueOne", keyTwo: "valueTwo",
id: 5, keyOne: "valueOne", keyTwo: "valueTwo",
id: 3, keyOne: "valueOne", keyTwo: "valueTwo",
id: 4, keyOne: "valueOne", keyTwo: "valueTwo"
];
如您在此处看到的,如果您的 id 已经按顺序排列,则 reverse 方法会反转您的数组:
let JsonReversedArray= JsonArray.sort((a,b) => b.id - a.id);
这对于这种情况是正确的
【讨论】:
以上是关于如何按降序对 JSON 数组元素进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章