Упорядочение объекта в алфавитном порядке при сохранении определенной пары ключ / значение в качестве первого элемента - PullRequest
0 голосов
/ 25 сентября 2019

Попытка упорядочить массив объектов для размещения в таблице в алфавитном порядке, сохраняя при этом определенный столбец в качестве первой пары ключ / значение в Javascript.Он должен оставаться в виде массива, чтобы я мог отобразить его для отображения таблицы.

Я пробовал проходить по объекту и сортировать его, но, похоже, не могу этого сделать, сохраняя при этом категорию в качестве первогоpair.

Мои данные выглядят так ...

data = [{"Category": "Food",
        "Dave": "286 / 91% / 98%",
        "Caron": "215 / 83% / 87%",
        "Sam": "134 / 100% / 100%",
        "Edward": "433 / 100% / 100%",
        "Adam": "827 / 100% / 100%"},
        {"Category": "Drink",
        "Dave": "286 / 91% / 98%",
        "Elis": "215 / 83% / 87%",
        "Creed": "134 / 100% / 99%",
        "Edward": "433 / 100% / 100%",
        "Tanya": "87 / 100% / 10%"}]

Я расположил заголовок по алфавиту, но сейчас пытаюсь выровнять тело таблицы

Кажется, этосделали работу ....

sortTableRows = obj => {
    const sortedObj = {};
    sortedObj["Category"] = "";
    Object.keys(obj)
      .slice(1)
      .sort()
      .forEach(key => {
        sortedObj[key] = obj[key];
      });
    return Object.keys(sortedObj);
  };

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Вы можете создавать новые объекты и назначать отсортированные пары ключ / значение для объекта с первым ключом Category.

var data = [{ Category: "Food", Dave: "286 / 91% / 98%", Caron: "215 / 83% / 87%", Sam: "134 / 100% / 100%", Edward: "433 / 100% / 100%", Adam: "827 / 100% / 100%" }, { Category: "Drink", Dave: "286 / 91% / 98%", Elis: "215 / 83% / 87%", Creed: "134 / 100% / 99%", Edward: "433 / 100% / 100%", Tanya: "87 / 100% / 10%" }];

data = data.map(o => Object.assign(
    { Category: null },
    ...Object
        .entries(o)
        .sort(([a], [b]) => a.localeCompare(b))
        .map(([k, v]) => ({ [k]: v }))
));

console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 25 сентября 2019

В принципе, если я вас хорошо понимаю, вы хотите отсортировать объекты в массиве по парам ключ-значение.Нет прямого способа выполнить сортировку, но вы можете сделать это, как здесь Сортировка объекта JavaScript по значению свойства Затем используйте unshift, чтобы добавить категорию в начале.Таким образом, после сортировки вы array.unshift() добавляете категорию

, подробнее о несмещении можно узнать здесь Смещено

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