javascript - 按特定顺序按数字对对象数组进行排序
问题描述
我有以下数组 ob 对象:
let given = [
{id: 1, number: 43},
{id: 2, number: 0},
{id: 3, number: 3},
{id: 4, number: undefined},
{id: 5, number: 1},
{id: 6, number: 0},
{id: 7, number: 0},
{id: 8, number: 36},
{id: 69, number: 0}
]
并想以这种方式对其进行排序
let expected = [
{id: 1, number: 43},
{id: 3, number: 3},
{id: 4, number: undefined},
{id: 5, number: 1},
{id: 8, number: 36},
{id: 2, number: 0},
{id: 6, number: 0},
{id: 7, number: 0},
{id: 69, number: 0}
]
所有编号为 0 的对象都应该在数组的末尾,但之前的顺序应该仍然存在
我试过 array.sort() 但没有收到想要的结果
解决方案
您首先过滤非零对象,而不是零对象。然后连接两个数组。
let given = [
{id: 1, number: 43},
{id: 2, number: 0},
{id: 3, number: 3},
{id: 4, number: undefined},
{id: 5, number: 1},
{id: 6, number: 0},
{id: 7, number: 0},
{id: 8, number: 36},
{id: 69, number: 0}
]
const expected = [
...given.filter(item => item.number !== 0),
...given.filter(item => item.number === 0)
]
console.log(JSON.stringify(expected))
或者,如果您认为两个循环可能会影响您的应用程序性能,您可以使用一个循环。
推荐阅读
- c# - 在 QC 复选框列表 Unity 上添加分数
- sql - 在 ADODB.Connection 中使用“NOT IN”选择
- recharts - Recharts 自定义 X 轴
- ios - 如何将tableview的索引访问到下一个vc
- embedded - stm32即使没有写入也会擦除闪存吗?
- kubernetes - 使用应用程序负载均衡器 | 舵图 | AWS
- c - 使用带参数的 perror
- python-3.6 - Django 2.0 到 2.2 升级 centos7
- database - 如何按计数或等式过滤(Azure)Edm.String 集合?
- node.js - nodejs electronjs sqlite3 - 使用未声明的标识符'napi_is_detached_arraybuffer'