1

I'm trying to sort an array, where its objects consist of a dynamic key of type number.

Now I want to sort the objects so that the numbers start from the smallest first -- the number I mean is the key of the object.

Here's my code

const arr = [{"3": 32}, {"1": 42}, {"5": 48}];

arr.sort((a,b) => {
  if (a < b) {
    return -1;
  }

  if (a > b) {
    return 1;
  }

  return 0;
});

console.log(arr);

The order of the objects should be:

[{"1": 42},{"3":32},{"5":48}]
3
  • Does this answer your question? Sort array of objects by string property value Commented Feb 17, 2022 at 6:54
  • @Sheri No, that question is about sorting an array of objects by the value of a fixed property, lexicographically. This question is about sorting an array of single-property objects by key, numerically. Commented Feb 17, 2022 at 7:00
  • Duplicate target found on this search page. Commented Feb 17, 2022 at 7:01

4 Answers 4

4

You'll need to extract the keys... like with Object.keys:

const arr = [{"3": 32}, {"1": 42}, {"5": 48}];

arr.sort((a,b) => Object.keys(a)[0] - Object.keys(b)[0]);

console.log(arr);

Sign up to request clarification or add additional context in comments.

Comments

1

This should work

const arr = [{"3": 32}, {"1": 42}, {"5": 48}];

arr.sort((a,b) => {
  const firstKey = Object.keys(a)[0]
  const secondKey = Object.keys(b)[0]
    return  secondKey - firstKey
})

Comments

1

Not sure whether its perfect, but surely works.

const arr = [{"3": 32}, {"1": 42}, {"5": 48}];

const sortedArr = arr.sort((a,b) => {
  let aKey = parseInt(Object.keys(a)[0]);
  let bKey = parseInt(Object.keys(b)[0]);

  return aKey - bKey;
});

console.log(sortedArr);

Comments

1

use this and it should work

let arr = [{"3": 32}, {"1": 42}, {"5": 48}];

let getKey=(array)=> Object.keys(array)[0]

arr.sort((a,b) => (getKey(a) - getKey(b)))

console.log(arr)

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.