【发布时间】:2021-09-02 07:39:21
【问题描述】:
我有一个对象数组,例如:
const arr = [
{
name: 'John',
age: 20,
},
{
name: 'Mark',
age: 30,
},
...
]
我有一个服务调用,它有一个 order 参数,它是一个具有两个属性的对象:一个字段,它是我想要对我的对象数组进行排序的字段,以及一个“asc”,它是我的布尔值希望列表按升序或降序排列。
const order = {
field: 'name',
asc: true,
}
我会开始这样的事情,但它似乎不是解决方案
orderedList = list.sort((a, b) => {
if (order.asc) {
return a[order.field] - b[order.field];
} else {
return b[order.field] - a[order.field];
}
});
【问题讨论】:
-
减法技巧仅适用于数字(对于
age),但对于字符串等,您必须使用>、<或通过其他方式进行比较。 -
这可能会有所帮助:stackoverflow.com/a/1129270/2358409
-
是的,我已经看到了,但是出于某种原因,我努力将我的“asc”属性实现为比较函数 - 今天早上我感到麻木,抱歉这个愚蠢的问题。最初我尝试这样:``` orderedList= list.sort((a, b) => { if (order.asc) { return a[order.field] > b[order.field] ? 1 : 0; } else { return a[order.field]
-
我想我已经修好了,现在可以了。谢谢大家!
标签: javascript arrays sorting