I got this array of objects that I want to sort by key from a0
const items = [
{ key: "a2", value: 37 },
{ key: "b2", value: 37 },
{ key: "b0", value: -12 },
{ key: "a4", value: 21 },
{ key: "a21", value: 21 },
{ key: "a8", value: 21 },
{ key: "a5", value: 21 },
{ key: "a3", value: 45 },
{ key: "b1", value: 13 },
{ key: "a1", value: 21 },
{ key: "a0", value: 21 },
{ key: "a9", value: 21 },
{ key: "a20", value: 21 },
{ key: "a7", value: 21 },
{ key: "a10", value: 21 },
{ key: "a11", value: 21 },
{ key: "a12", value: 21 },
{ key: "a6", value: 21 },
{ key: "a19", value: 21 },
];
I want the new array to be:
const items = [
{ key: "a0", value: 21 },
{ key: "a1", value: 21 },
{ key: "a2", value: 37 },
{ key: "a3", value: 45 },
{ key: "a4", value: 21 },
{ key: "a5", value: 21 },
{ key: "a6", value: 21 },
{ key: "a7", value: 21 },
{ key: "a8", value: 21 },
{ key: "a9", value: 21 },
{ key: "a10", value: 21 },
{ key: "a12", value: 21 },
{ key: "a19", value: 21 },
{ key: "a20", value: 21 },
{ key: "a21", value: 21 },
{ key: "b0", value: -12 },
{ key: "b1", value: 13 },
{ key: "b2", value: 37 },
];
I tried with this code but with no success:
items.sort((a, b) => a.key - b.key);
// sort by key
items.sort((a, b) => {
const keyA = a.key.toUpperCase();
const keyB = b.key.toUpperCase();
if (keyA < keyB) {
return -1;
}
if (keyA > keyB) {
return 1;
}
return 0;
});
console.log(items);
Which gives med the following output but the keys are not in proper order. I want them to be from a0, a1, a2, a3 and so on. Not a10 as position 3. How can I accomplish this?
{key: 'a0', value: 21}
{key: 'a1', value: 21}
{key: 'a10', value: 21}
{key: 'a11', value: 21}
{key: 'a12', value: 21}
{key: 'a19', value: 21}
{key: 'a2', value: 37}
{key: 'a20', value: 21}
{key: 'a21', value: 21}
{key: 'a3', value: 45}
{key: 'a4', value: 21}
{key: 'a5', value: 21}
{key: 'a6', value: 21}
{key: 'a7', value: 21}
{key: 'a8', value: 21}
{key: 'a9', value: 21}
{key: 'b0', value: -12}
{key: 'b1', value: 13}
{key: 'b2', value: 37}