Я пытаюсь отсортировать массив объектов по цветам:
Мой код: -
const colors = [
{
"color": "purple",
"type": true
},
{
"color": "red",
"type": false
},
{
"color": "green",
"type": true
},
{
"color": "black",
"type": false
},
{
"color": "pink",
"type": true
}]
const list = colors.sort((a) => a.color);
console.info(list);
Спасибо за вашу поддержку!
Я хочу отсортировать по алфавиту.
Вам нужна функция сравнения, возвращающая результат сравнения (0, отрицательный, положительный). Смотрите документацию: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Этот код поможет вам отсортировать в порядке возрастания на основе значения цвета.
const colors = [
{
"color": "purple",
"type": true
},
{
"color": "red",
"type": false
},
{
"color": "green",
"type": true
},
{
"color": "black",
"type": false
},
{
"color": "pink",
"type": true
}
]
const sortedColors = colors.sort((a, b) => {
if (a.color < b.color) {
return -1;
}
if (a.color > b.color) {
return 1;
}
return 0;
});
console.info(sortedColors);
Попробуйте это, это сработает.
Вы можете изменить состояние в соответствии с требованиями, спасибо.
const colors = [{
"color": "purple",
"type": true
},
{
"color": "red",
"type": false
},
{
"color": "green",
"type": true
},
{
"color": "black",
"type": false
},
{
"color": "pink",
"type": true
}
]
const result = colors.sort((a, b) => (a.color > b.color) ? 1 : ((b.color > a.color) ? -1 : 0))
console.info(result);
Используя sort()
, вы хотите сравнить два элемента в массиве, поэтому вам нужно поместить туда два параметра.
const colors = [
{
"color": "purple",
"type": true
},
{
"color": "red",
"type": false
},
{
"color": "green",
"type": true
},
{
"color": "black",
"type": false
},
{
"color": "pink",
"type": true
}]
const list = colors.sort((a, b) => a.color > b.color);
console.info(list);
но это не сортировка по алфавиту
Для более точной сортировки вам, вероятно, лучше использовать метод localeCompare
.
Array.prototype.sort в JavaScript принимает обратный вызов с двумя параметрами.
Из МДН,
Однако вместо написания собственной функции сравнения вы можете использовать встроенную функцию String.prototype.localeCompare для сравнения двух строк.
const colors = [
{
"color": "purple",
"type": true
},
{
"color": "red",
"type": false
},
{
"color": "green",
"type": true
},
{
"color": "black",
"type": false
},
{
"color": "pink",
"type": true
}]
const list = colors.sort((a, b) => a.color.localeCompare(b.color));
console.info(list);
Каков твой вопрос?