Порядок Javascript отправляет данные по ключу - PullRequest
0 голосов
/ 17 октября 2018

У меня есть эти данные ниже, я хочу вставить их в массив, но упорядочив их по имени (x)

Вот данные:

params:
  name2:
    height: 2
  name0:
    height: 0
  name1:
    height: 3

А вот код:

 data.f = []

  Object.keys(data.params).forEach((key, idx) => {
      data.f.push({
          ...data.params[key],
          name: `${idx} - ${key}`
      });
  })

В данный момент он просто помещает его в массив во время чтения, но он не упорядочен.

Как я могу заказать его либо во время чтения, либо после заполнения?

Ответы [ 2 ]

0 голосов
/ 17 октября 2018
Object.keys(data.params)
.sort((a,b) => data.params[a].height > data.params[b].height)
.forEach((key, idx) => {
      data.f.push({
          ...data.params[key],
          name: `${idx} - ${key}`
      });
  })
0 голосов
/ 17 октября 2018

Вы можете сделать это позже, используя функцию сортировки с вашей пользовательской функцией сравнения.

data.f.sort((a,b) => a.name > b.name)

Более того, если я могу предположить, вам не нужно создавать массив и вставлять его.Вы можете просто использовать функцию карты и написать:

data.f = Object.keys(data.params).map((key, idx) => {
  return {
      ...data.params[key],
      name: `${idx} - ${key}`
  };
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...