我有一组具有两个属性的对象:名称和小时.
例如:
array = [
{name: "ANDY", hours: 40 },
{name: "ANDY", hours: 50 },
{name: "GREG", hours: 40 },
]
Run Code Online (Sandbox Code Playgroud)
例如,在我的数组中,我希望排序的结果是Andy的小时数最多,Andy的小时数稍长,然后是Greg,因为他的名字后来按字母顺序排列,依此类推.
由于array.sort()函数传递数组的两个元素进行比较,我意识到这不是我的方法,但未能提出一个优雅的解决方案.请帮帮我.
geo*_*org 12
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)Run Code Online (Sandbox Code Playgroud)
如果javascript有一个太空船运营商会更优雅.请注意,此代码很容易扩展以使用更多属性:
ary.sort(function(a, b) {
return cmp(a.name, b.name) || cmp(a.age, b.age) || cmp(b.hours, a.hours) || ....
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |