javascript - 按键名对对象数组进行排序
问题描述
我需要按确切的顺序对键进行排序,例如我有下一个数组:
const arr = [
{
active: true,
code: "1234",
indentifier: "OPC-999",
name: "Example",
start: "02-12-1997",
}
{
active: false,
code: "4567",
indentifier: "OPC-111",
name: "Example",
start: "03-02-2010",
}
]
每个对象的确切顺序应该是:名称、标识符、代码、开始、活动。
我不需要按值排序,而是按键名排序。
最好的方法是什么?
解决方案
keys
您可以按您想要的顺序使用对象键创建一个数组。然后您可以map
在数组中的每个对象,生成一个新对象,其属性按照键数组中定义的顺序创建:
const arr = [
{
active: true,
code: "1234",
indentifier: "OPC-999",
name: "Example",
start: "02-12-1997",
},
{
active: false,
code: "4567",
indentifier: "OPC-111",
name: "Example",
start: "03-02-2010",
}
]
const keys = ['name', 'indentifier', 'code', 'start', 'active'];
const result = arr.map(o => Object.fromEntries(keys.map(k => [k, o[k]])));
console.log(result);
推荐阅读
- powershell - 如何导出证书路径(.P7B)中的所有证书?
- python - MacOS - Python 说找不到模块,但它已经安装
- python-3.x - WARN ProcfsMetricsGetter:尝试计算页面大小时出现异常,因此 ProcessTree 指标的报告已停止
- sql - 出现错误 ORA-01843 的查询:不是有效月份,数据类型为 DATE
- azure - 使用 Terraform HCL 创建 Azure 防火墙的问题
- java - Android Studio 抛出“线程“主”javax.net.ssl.SSLException 中的异常:收到致命警报:protocol_version”
- r - 如何在 R 中一次运行多个线性回归?
- xpath - 使用 Google 电子表格从网站中提取电子邮件
- loops - 在液体 if 语句中使用来自父液体循环的属性
- sql-server - 是否可以创建托管在谷歌云上的分区表 SQL Server?