0

Trying to find optimal and working version how to sort single object by it's dynamic keys or values. The sorting has to be case insensitive but display capital letters.

Given:

const givenInput = {  
  C1: "C 1",
  a0: "a 0",
  a1: "a 1",
  a2: "a 2",
  a6: "a 6",
  a7: "a 7",
  aB: "a B",
  a3: "a 3",
  sdasdA: "sdasd A",
  aA: "a A",
  aC: "a C",
  aD: "a D",
  a4: "a 4",
  a5: "a 5",
  b1: "b 1",
  sdasd0: "sdasd 0",
  sdasd1: "sdasd 1",
  sdasdB: "sdasd B",
}

Expected

const expectedOutput = { 
  a0: "a 0",
  a1: "a 1",
  a2: "a 2",
  a3: "a 3",
  a4: "a 4",
  a5: "a 5",
  a6: "a 6",
  a7: "a 7",
  aA: "a A",
  aB: "a B",
  aC: "a C",
  aD: "a D",
  b1: "b 1",.
  C1: "C 1",
  sdasd0: "sdasd 0",
  sdasd1: "sdasd 1",
  sdasdA: "sdasd A",
  sdasdB: "sdasd B",
}

Lodash can be used too

Mr. Polywhirl
  • 42,981
  • 12
  • 84
  • 132
empeK
  • 121
  • 4
  • 3
    [Objects do not guarantee key order](https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order) – VLAZ Mar 18 '19 at 13:00
  • 1
    Maybe you want to sort the output of Object.entries(givenInput) ? – jo_va Mar 18 '19 at 13:02
  • This will work, `Object.entries(givenInput).sort((a,b)=>a[0].localeCompare(b[0])).map(a=>a.join(':')).join('\n')`. As Jo suggested, you can sort the entries by their keys (index 0). – Mr. Polywhirl Mar 18 '19 at 13:07
  • This would work too I think: `const result = Object.entries(givenInput).sort(([k1, v1], [k2, v2]) => k1.localeCompare(k2));` – jo_va Mar 18 '19 at 13:09

0 Answers0