Порядок Javascript отправляет данные по ключу

1

У меня есть данные ниже, я хочу нажать в массив, но заказывая его по имени (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}'
      });
  })

На данный момент он просто вталкивает его в массив, когда он читает его, но он не заказывается.

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

Показать ещё 1 комментарий
Теги:
yaml

2 ответа

0
Лучший ответ
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

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

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}'
  };
});
  • 0
    Сортировка в данный момент дает мне неправильные данные ... Мне нужно имя: для отображения как самый низкий idx с name0 (наименьший номер имени), например: name: 0 - name0, 1 - name1 и т.д.
  • 0
    не могли бы вы поделиться некоторыми демонстрационными данными. может быть, часть вашего массива data.f перед сортировкой

Ещё вопросы

Сообщество Overcoder
Наверх
Меню