我正在尝试根据该数组中的属性值对该数组进行排序。当我向我使用的 API 提出请求时,这就是返回给我的内容。
0: {id: 23634, pollId: 6907, name: "B", type: "PollOption", totalAmountRaised: 341, …}
1: {id: 23635, pollId: 6907, name: "A", type: "PollOption", totalAmountRaised: 636, …}
2: {id: 23641, pollId: 6907, name: "C", type: "PollOption", totalAmountRaised: 246, …}
3: {id: 23642, pollId: 6907, name: "D", type: "PollOption", totalAmountRaised: 1092, …}
4: {id: 23643, pollId: 6907, name: "E", type: "PollOption", totalAmountRaised: 0, …}
我想按照 totalAmountRaised 值从大到小对数组进行排序。我正在尝试使用 sort() 方法来避免编写大型复杂函数。这就是我要找的。p>
arrayToSort.sort((a, b) => (a.totalAmountRaised < b.totalAmountRaised) ? 1 : -1);
0: {id: 23642, pollId: 6907, name: "D", type: "PollOption", totalAmountRaised: 1092, …}
1: {id: 23635, pollId: 6907, name: "A", type: "PollOption", totalAmountRaised: 636, …}
2: {id: 23634, pollId: 6907, name: "B", type: "PollOption", totalAmountRaised: 341, …}
3: {id: 23641, pollId: 6907, name: "C", type: "PollOption", totalAmountRaised: 246, …}
4: {id: 23643, pollId: 6907, name: "E", type: "PollOption", totalAmountRaised: 0, …}
但是,当我运行该方法时,它只交换 totalAmountRaised 的值,它实际上并没有改变数组的顺序,这正是我正在寻找的。这是实际返回的内容。
0: {id: 23634, pollId: 6907, name: "B", type: "PollOption", totalAmountRaised: 1092, …}
1: {id: 23635, pollId: 6907, name: "A", type: "PollOption", totalAmountRaised: 636, …}
2: {id: 23641, pollId: 6907, name: "C", type: "PollOption", totalAmountRaised: 341, …}
3: {id: 23642, pollId: 6907, name: "D", type: "PollOption", totalAmountRaised: 246, …}
4: {id: 23643, pollId: 6907, name: "E", type: "PollOption", totalAmountRaised: 0, …}
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
试试这个:
let arr = [
{id: 23634, pollId: 6907, name: "B", type: "PollOption", totalAmountRaised: 341,},
{id: 23635, pollId: 6907, name: "A", type: "PollOption", totalAmountRaised: 636,},
{id: 23641, pollId: 6907, name: "C", type: "PollOption", totalAmountRaised: 246,},
{id: 23642, pollId: 6907, name: "D", type: "PollOption", totalAmountRaised: 1092,},
{id: 23643, pollId: 6907, name: "E", type: "PollOption", totalAmountRaised: 0},
]
let sorted = arr.sort((a, b) => b.totalAmountRaised - a.totalAmountRaised)
console.log(sorted)
答案 1 :(得分:0)
您不需要所有这些复杂的a.totalAmountRaised < b.totalAmountRaised) ? 1 : -1
这应该是:
b.totalAmountRaised - a.totalAmountRaised
你只需要这个:
let arrayToSort = [
{id: 23634, pollId: 6907, name: "B", type: "PollOption", totalAmountRaised: 341,},
{id: 23635, pollId: 6907, name: "A", type: "PollOption", totalAmountRaised: 636,},
{id: 23641, pollId: 6907, name: "C", type: "PollOption", totalAmountRaised: 246,},
{id: 23642, pollId: 6907, name: "D", type: "PollOption", totalAmountRaised: 1092,},
{id: 23643, pollId: 6907, name: "E", type: "PollOption", totalAmountRaised: 0},
];
console.log(arrayToSort.sort((a, b) => {return b.totalAmountRaised - a.totalAmountRaised}));