Доброго времени суток! Пытаюсь освоить алгоритмы сортировки. Есть задание отсортировать массив по свойствам его объектов(color); Написал функцию сравнения, для метода пузырьком срабатывает, для быстрой сортировки выдает ошибку: Uncaught TypeError: Cannot read properties of undefined (reading 'color')
Можете подсказать с чем это связно, предполагаю, что условие сравнения надо поменять)
let fruitsJSON = `[
{"kind": "Мангустин", "color": "фиолетовый", "weight": 13},
{"kind": "Дуриан", "color": "зеленый", "weight": 35},
{"kind": "Личи", "color": "розово-красный", "weight": 17},
{"kind": "Карамбола", "color": "желтый", "weight": 28},
{"kind": "Тамаринд", "color": "светло-коричневый", "weight": 22}
]`;
// преобразование JSON в объект JavaScript
let fruits = JSON.parse(fruitsJSON);
const comparationColor = (fruit1, fruit2) => {
// функция сравнения двух элементов по цвету
const priority = ['красный', 'розово-красный', 'оранжевый', 'желтый', 'зеленый', 'голубой', 'синий', 'фиолетовый', 'светло-коричневый'];
const priority1 = priority.indexOf(fruit1.color);
const priority2 = priority.indexOf(fruit2.color);
return priority1 > priority2
};
function swap(arr, a, b) {
let temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
function quickSort(arr, comparation) {
return quick(arr, 0, arr.length - 1, comparation);
}
function quick(arr, left, right, comparation) {
let i;
if (arr.length > 1) {
i = partition(arr, left, right, comparation);
if (left < i - 1) {
quick(arr, left, i - 1, comparation);
}
if (i < right) {
quick(arr, i, right, comparation);
}
}
return arr;
}
function partition(arr, left, right, comparation) {
const pivot = arr[Math.floor((right, left) / 2)];
let i = left;
let j = right;
while (i <= j) {
while (comparation(arr[i], pivot)) {
i++;
}
while (comparation(arr[j], pivot) === false) {
j--;
}
if (i <= j) {
swap(arr, i, j);
i++;
j--;
}
}
return i;
}
quickSort(fruits, comparationColor);