如何通过传递关键字来改变Object数组中关键字位置的顺序



我正在研究导出功能。但来自API的数据不在所需的序列中(数组中对象的键(。所以我想更改对象中单个行的键序列。数据就像这个

data = [
{
  "key4":"value4",
  "key1":"value1",
  "key5":"value5",
  "key3":"value3",
  "key2":"value2"
},
{
  "key4":"value4",
  "key1":"value1",
  "key5":"value5",
  "key3":"value3",
  "key2":"value2"
}
]

我想要像这样的输出

 data =[ {
  "key1":"value1",
  "key2":"value2",
  "key3":"value3",
  "key4":"value4",
  "key5":"value5"
 },
 {
  "key1":"value1",
  "key2":"value2",
  "key3":"value3",
  "key4":"value4",
  "key5":"value5"
 }
 ]

您可以将.mapObject.entriesObject.fromEntries一起使用,并根据关键字进行排序:

data = [
{
  "key4":"value4",
  "key1":"value1",
  "key5":"value5",
  "key3":"value3",
  "key2":"value2"
},
{
  "key4":"value4",
  "key1":"value1",
  "key5":"value5",
  "key3":"value3",
  "key2":"value2"
}
].map((item) =>
    Object.fromEntries(
        Object.entries(item).sort(
            (a, b) => a[0].localeCompare(b[0])
        )
    )
)
console.log(data);

我在angular中使用以下代码解决了这个问题。

let headerList = ["key1", "key2", "key3", "key4", "key5"]
let newExportData = [];
  data.forEach(obj => {
    let json = {};
    headerList.forEach(header => {
    json[header] = obj[header];
  });
  newExportData.push(json);
});
console.log(newExportData);

最新更新