-4

Have an array with objects like this:

    [{id: "58eeed338b115",  name: "Bob", avatar: "" },
{id: "58eeed338b115",  name: "Bob", avatar: "" }]

I need change order of properties to this:

    [{avatar: "",  name: "Bob",id: "58eeed338b115"},
{avatar: "",  name: "Bob",id: "58eeed338b115"} ]

in real task I have about 20 obj, how to change order? use for in? I have no ideas how to do this. I want setup manualy order, params in obj can be about 10

3 Answers3

1

const arr = [{id: "58eeed338b115",  name: "Bob", avatar: "" },
{id: "58eeed338b115",  name: "Bob", avatar: "" }]

const sortOrder = {'avatar': 1, 'id': 2, 'name': 3}



const res = arr.map(o => Object.assign({}, ...Object.keys(o).sort((a, b) => sortOrder[a] - sortOrder[b]).map(x => { return { [x]: o[x]}})))

console.log(JSON.stringify(res, null, 2))
Egor Stambakio
  • 15,230
  • 5
  • 28
  • 32
-1

try:

const sortObj = ({id, name, avatar, ...more}) => ({avatar, name, id, ...more})

const objs = [...]
const objsSorted = objs.map(sortObj)
JonDotsoy
  • 64
  • 1
  • 4
-1

var sortObj = function sortObj(obj) {
    let keys = [];
    for (let key in obj) {
      if (obj.hasOwnProperty(key)) {
        keys.push(key);
      }
    }
    keys.sort();
    
    let newObj = {};
    for (let i = 0; i < keys.length; ++i) {
      newObj[keys[i]] = obj[keys[i]];
    }
    return newObj;
};

let arr = [{id: "58eeed338b115",  name: "Bob", avatar: "" },
{id: "58eeed338b115",  name: "Bob", avatar: "" }];

for (let i = 0; i < arr.length; ++i) {
  console.log(sortObj(arr[i]));
}
silentw
  • 4,479
  • 4
  • 22
  • 44