gpt4 book ai didi

javascript - 对 JS 数组进行分组排序

转载 作者:搜寻专家 更新时间:2023-11-01 04:45:37 25 4
gpt4 key购买 nike

我有一个包含两个属性的对象数组:Name 和 Hours。

例如:

array = [
{name: "ANDY", hours: 40 },
{name: "ANDY", hours: 50 },
{name: "GREG", hours: 40 },
]

例如,在我的数组中,我希望排序结果首先是工作时间最多的安迪,然后是工作时间稍短的安迪,然后是格雷格,因为他的名字按字母顺序排在后面,依此类推。

由于 array.sort() 函数传递数组的两个元素进行比较,我意识到这不是适合我的方法,但未能提出一个优雅的解决方案。请帮帮我。

最佳答案

array = [
{name: "ANDY", hours: 40 },
{name: "GREG", hours: 40 },
{name: "ANDY", hours: 50 },
]

function cmp(x, y) {
return x > y ? 1 : (x < y ? -1 : 0);
}


array.sort(function(a, b) {
return cmp(a.name, b.name) || cmp(b.hours, a.hours)
})

console.log(array)

如果 javascript 有一个 spaceship operator那会更优雅。请注意,此代码很容易扩展以使用更多属性:

ary.sort(function(a, b) {
return cmp(a.name, b.name) || cmp(a.age, b.age) || cmp(b.hours, a.hours) || ....
})

关于javascript - 对 JS 数组进行分组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com