1

I am receiving weird response from 3rd party api , that looks like below

{ "27000CE": -1, "27100CE": 2, "27300CE": -1, "27200CE": 5 } 

How do I sort this by value ?

like ascending or descending.

{ "27300CE": -1, "27000CE": -1, "27100CE": 2, "27200CE": 5 } 

I tried something like below

sortArrayOfObjects = (arr, key) => { return arr.sort((a, b) => { return a[key] - b[key]; }); }; 

But all keys are different and thats the problem.

3
  • yea type of this seems to be like object ,, but thats the response i receive by api Commented Feb 27, 2019 at 8:31
  • Is this a text response? Like, is the API sending this exact string of characters? If so, the first order of business is to manually parse it into an actual array / object. Commented Feb 27, 2019 at 8:32
  • hi , i edited my question , please remove the downvote , thank you Commented Feb 27, 2019 at 8:36

2 Answers 2

1

You can sort the Object.entries and then create a new object using reduce like this:

const response = { "27100CE": 2, "27000CE": -1, "27300CE": -1, "27200CE": 5 } const sorted = Object.entries(response) .sort((a, b) => a[1] - b[1]) .reduce((r, [key, value]) => { r[key] = value return r }, {}) console.log(sorted)

This works only if you don't have any integer keys in response. More info: Does JavaScript Guarantee Object Property Order?

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

Comments

0

I believe you receive an object, in that case your input will be like this:

let obj = {"27300CE": -1, "27200CE": 5, "27100CE": 2, "27000CE": -1} 

And you can sort by values like so:

let keys = Object.keys(obj); // Then sort by using the keys to lookup the values in the original object: keys.sort(function(a, b) { return obj[a] - obj[b] }); console.log(keys);//["27300CE", "27000CE", "27100CE", "27200CE"] 

based upon new keys sequence you can create a new obj , sorted one if you like

2 Comments

hi , this sorts only key , i need it with value too
yeah well, you can use it to generate a new sorted obj, i didnt know it was a big of a deal

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.