0

I have tried to find a solution and could find something that is close but not there yet. Javascript sort an object by keys based on another Array? I want to sort them by ABC ascending and descending and I don't know where to start.

const Accounts = {
  'thing': {
    password: '123',
  }
}

const sortedKeys = Object.getOwnPropertyNames(Accounts).sort();
//This returns the names but not the passwords

2 Answers2

0
const sortedKeys = Object.getOwnPropertyNames(Accounts).sort();

The above sortedKeys will contain an array of sorted keys as you have seen. You can then map the sorted keys to their values and have a sorted object.

The code is a simpler version of what I just explained:

const Accounts = {
  thing: { password: "123 }
}

const sortedAccounts = Object.keys(Accounts)
  .sort()
  .reduce((accumulator, key) => {
    accumulator[key] = obj[key];

    return accumulator;
  }, {});
0

If I understood your question correctly, then it's essentially a duplicate of this question.

From the linked question's comments: "The ordering of object properties is non-standard in ECMAScript", so you can't do what you want to do directly.

Here's how I'd do it:

const Accounts = {
  'thing': {
    password: '123',
  }
} 

//get array keys and sort them
let sorted_keys = Object.keys(Accounts).sort();

//if you need your values too then use keys to access
sorted_keys.forEach(function(key) {//access each key and map to its value
    let value = Accounts[key]
    //do whatever with value
}
FrontDeer
  • 28
  • 5
  • @ChillingCone426 Sure, use `sorted_keys.reverse();` to reverse the order of the ascending array. BTW, Stack Overflow recommends thoroughly researching a problem before posting to avoid a sea low-quality/low-effort questions. – FrontDeer Jun 29 '22 at 20:05