#javascript #arrays #reactjs #sorting
#javascript #массивы #reactjs #сортировка
Вопрос:
У меня есть один вопрос. Как я могу отсортировать элементы массива сначала по их емкости, а затем по первой букве их имени? Основная идея заключается в том, чтобы сначала отсортировать по емкости от низкой до высокой или от высокой до низкой, а затем, если два элемента имеют одинаковую емкость, эти два элемента должны быть отсортированы по первой букве их имени.
Вот базовый пример кода от меня
myArray.sort((eventA, eventB) => {
if (this.state.sort.highToLow.enabled) {
return eventA.capacity > eventB.capacity ? -1 : 1;
} else if (this.state.sort.lowToHigh.enabled) {
return eventA.capacity > eventB.capacity ? 1 : -1;
} else { return 0; }
})
Ответ №1:
вы можете использовать метод сортировки Lodash
_.sortBy(myArray, ['capacity', 'name']);
Ответ №2:
попробуйте что-то вроде этого. метод сортировки, проверка имени при одинаковой емкости.
const data = [
{
name: "z",
capacity: 2,
},
{
name: "b",
capacity: 1,
},
{
name: "a",
capacity: 1,
},
];
data.sort((a, b) => {
if (a.capacity === b.capacity) {
return a.name > b.name ? 1 : -1;
}
return a.capacity - b.capacity;
});
console.log(data);