Преобразовать последовательность Array в собственную последовательность - PullRequest
1 голос
/ 09 апреля 2020

Преобразовать массив списка в мой собственный порядок

Текущий вывод:

[
    { "key": "DG Power Output", "value": "6.00", "unit": "kWh", },
    { "key": "DG Run Time", "value": "5999999952", "unit": "minutes", },
    { "key": "Fuel Level (Before)", "value": "8.00", "unit": "liters", }
]

Преобразовать это в

[
    { "key": "Fuel Level (Before)", "value": "8.00", "unit": "liters", },
    { "key": "DG Run Time", "value": "5999999952", "unit": "minutes", },
    { "key": "DG Power Output", "value": "6.00", "unit": "kWh", }
]

Ответы [ 3 ]

0 голосов
/ 09 апреля 2020

Самым базовым c Я бы go был бы при доступе к индексу, скажем,

var a = [
    { "key": "DG Power Output", "value": "6.00", "unit": "kWh", },
    { "key": "DG Run Time", "value": "5999999952", "unit": "minutes", },
    { "key": "Fuel Level (Before)", "value": "8.00", "unit": "liters", }
]

Тогда

var b = [a[2], a[1], a[0]];

Это даст желаемый результат но это очень рискованно и подвержено ошибкам.

0 голосов
/ 09 апреля 2020

Я не совсем уверен, какие критерии вы хотите использовать для сортировки этого массива, но общий подход заключается в написании функции, которая сравнивает два элемента и возвращает число меньше 0 для первого элемента, который стоит первым, 0 если они равны, и число больше 0 для второго элемента, чтобы прийти первым. Затем вы можете передать эту функцию в Array.prototype.sort следующим образом:

const sorter = (a, b) => {
    if (a.key == b.key) return 0; // leave elements in place
    if (a.key > b.key) return -1; // a should come before b for descending order
    return 1; // b should come before a for descending order
};
const arr = [
    { "key": "DG Power Output", "value": "6.00", "unit": "kWh", },
    { "key": "DG Run Time", "value": "5999999952", "unit": "minutes", },
    { "key": "Fuel Level (Before)", "value": "8.00", "unit": "liters", }
];
console.log(arr.sort(sorter));
0 голосов
/ 09 апреля 2020

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

var data = [{ key: "DG Power Output", value: "6.00", unit: "kWh" }, { key: "DG Run Time", value: "5999999952", unit: "minutes" }, { key: "Fuel Level (Before)", value: "8.00", unit: "liters" }],
    order = { "Fuel Level (Before)": 1, "DG Run Time": 2, "DG Power Output": 3 };

data.sort(({ key: a }, {  key: b }) => order[a] - order[b]);

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