Lodash:按布尔值排序对象数组?

时间:2017-10-22 12:15:02

标签: javascript lodash

我有一系列我想订购的物品(基本上它是一张桌子):

myArr = [{
    name: 'John',
    email: 'john@gmail.com',
    accepted: true
}, {
    name: 'Alfred',
    email: 'alfred@gmail.com',
    accepted: false
}]

我正在使用lodash中的orderBy,如此:

//get columnName to sort by from another function
const newArr = _.orderBy(myArr, [columnName], ['asc'])

按名称和电子邮件排序工作正常,因为接受它并没有做任何事情。我知道我可以存储接受为0和1,但还有另一种方式吗? lodash是否足够,或者我应该为此创建一个单独的功能?

1 个答案:

答案 0 :(得分:0)

您可以使用 ES6 表示法

进行尝试
const newArr = [
    ...myArr.filter(c => c.accepted === false),
    ...myArr.filter(c => c.accepted === true)
];

您还可以使用 Array.sort原型

myArr.sort((a, b) => (a.accepted - b.accepted));