首页 > 解决方案 > 按键名对对象数组进行排序

问题描述

我需要按确切的顺序对键进行排序,例如我有下一个数组:

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",
             }
]

每个对象的确切顺序应该是:名称、标识符、代码、开始、活动。

我不需要按值排序,而是按键名排序。

最好的方法是什么?

标签: javascriptarraysangularobjectecmascript-6

解决方案


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);


推荐阅读