Сортировка массива JSON с несколькими объектами и без ключей - PullRequest
0 голосов
/ 12 января 2020

У меня есть следующий массив, у него есть несколько объектов, но нет ключей.

const result = [
  ["Joe", "1", "2.22%", "$3,000.00"], 
  ["Tom", "1", "2.22%", "$4,650.00"], 
  ["Ryan", "4", "4.44%", "$18,925.00"], 
  ["Jordan", "2", "4.44%", "$3,300.00"], 
  ["Fred", "0", "0.00%", "$0.00"], 
  ["Steve", "0", "0.00%", "$0.00"]
]

Я пытаюсь отсортировать по 4-му объекту, но мне очень тяжело разобраться с этим. Есть быстрый быстрый способ сделать это без изменения массива?

Я хотел бы вернуть результаты, отсортированные в 4-м объекте в порядке c.

return {result: result[0][0] + ": " + result[0][3] + '\n' + result[1][0] + ': ' + result[1][3] + '\n' + result[2][0] + ': ' + result[2][3] + '\n' + result[3][0] + ': ' + result[3][3] + '\n' + result[4][0] + ': ' + result[4][3] + '\n' + result[5][0] + ': ' + result[5][3] };

Чтобы возвращаемые результаты выглядели так:

Райан: 18 925,00

Том: 4 650,00

Иордания: 3 300,00

Джо: 3000 долларов

Фред: 0,00

Стив: 0,00

1 Ответ

1 голос
/ 12 января 2020

Вы можете получить нормализованное значение без нежелательных символов в качестве числа и вернуть дельту для сортировки.

const normalize = s => s.replace(/[^\d.]/g, '');

var array = [["Joe", "1", "2.22%", "$3,000.00"], ["Tom", "1", "2.22%", "$4,650.00"], ["Ryan", "4", "4.44%", "$18,925.00"], ["Jordan", "2", "4.44%", "$3,300.00"], ["Fred", "0", "0.00%", "$0.00"], ["Test", "0", "0.00%", "$0.00"]],
    result = array
        .sort((a, b) => normalize(b[3]) - normalize(a[3]))
        .map(({ [0]: name, [3]: amount }) => [name, amount]);

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...