js按照属性值排序

有以下数据:

var arr5 = [{id:10, flag: true},{id:5, flag: false},{id:6, flag: true},{id:9, flag: false}]

按照flag排序,为true的在前面显示,如何做?

阅读 4.1k
3 个回答
const arr5 = [
    { id: 10, flag: true },
    { id: 5, flag: false },
    { id: 6, flag: true },
    { id: 9, flag: false }
];

const r = arr5.sort((a, b) => b.flag - a.flag);
console.log(r);

// [
//     { id: 10, flag: true },
//     { id: 6, flag: true },
//     { id: 5, flag: false },
//     { id: 9, flag: false }
// ]

补充说明一下,JavaScript 中 boolean 值用于数值运算的时候,truefalse 分别是当作 10 来算的。用一些简单的运算都试得出来,

比如两次取反(按位):~~true === 1,或者直接 true + 0 === 1

不过 parseInt(true) 会得到 NaN

arr5.sort((a,b)=>!a.flag-1)
console.log(arr5)

如果是倒序就是把 !a.flag-1 换成 a.flag-1

_.sortBy(arr5,['flag'])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏