не switch/case и не if/else?
// array - массив объектов. Каждый объект в массиве имеет несколько пар ключ-значение
// param = arrayParams.value - ниже написан arrayParams
// При клике по param массив array должен сортироваться в зависимости от выбранного param
switch (param) {
case "цене":
array.sort((prev, curr) => prev.price - curr.price);
return array;
case "популярности":
array.sort((prev, curr) => curr.rating - prev.rating);
return array;
default:
array.sort((prev, curr) => curr.rating - prev.rating);
return array;
}
arrayParams= [
{ name: "По цене", value: "цене" },
{ name: "По популярности", value: "популярности" },
],
делаешь просто onclick=arrayParams[0] номер элемента массива и все
array.sort((prev, next) => prev[key] - curr[key]) - где кей - ключ объекта, по которому ты хочешь сортировать
это у меня и написано сейчас, но сортировка в зависимости от param по разным ключам должна происходить
const SORTERS = { cost: (prev, curr) => prev.price - curr.price, popularity: (prev, curr) => curr.rating - prev.rating, rating: (prev, curr) => curr.rating - prev.rating, default: (a, b) => a.value - b.value }; sortArray(arr, param) => { return SORTERS[param] ? [...arr].sort(SORTERS[param]) : [...arr].sort(SORTERS.default) }
Так ты этот ключ в функцию onclick передавай Типа onclick = sortFunc(price) const sortFunc = (objectKey) => array.sort((prev, curr) => prev[objectKey] - curr[objectKey])
Обсуждают сегодня