-1

I am working on export functionality. but data coming from API is not in the required sequence (keys of the object in an Array). So I wanted to change this sequence of keys in object for a single row. data is like this

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

And I want output like this

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

2 Answers2

1

You could use .map with Object.entries and Object.fromEntries, and sort on the key:

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);
dave
  • 62,300
  • 5
  • 72
  • 93
1

I solved this by using the following code in 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);