Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите стрелочную функцию переделать в нестрелочную (https://javascript.ru/forum/events/80256-pomogite-strelochnuyu-funkciyu-peredelat-v-nestrelochnuyu.html)

sovsem-nub 14.05.2020 17:32

Помогите стрелочную функцию переделать в нестрелочную
 
На хабр нашел такую функцию сортировки массива объектов

arrObjects=arrObjects.sort(compare(field, order));

function compare(field, order) {
        return order < 0 ?
   ((a, b) => (a[field] < b[field] && 1) || (a[field] > b[field] && -1) || 0) :
   ((a, b) => (a[field] < b[field] && -1) || (a[field] > b[field] && 1) || 0);
    
};


она может сортировать и текстовые и числовые значения.
единственное, что понял ? - это if а : это else
а функция compare возвращает одну из функций, в зависимости от order

но что значит эта запись

((a, b) => (a[field] < b[field] && 1) || (a[field] > b[field] && -1) || 0)


вообще не понятно (наверное возвращает -1 1 или 0). Если это можно как-то в более простом варианте написать, без стрелочных функций, чтобы хоть что-то понятнее стало.
И где можно посмотреть, что из себя представляет из себя встроенная функция .sort как там происходит перебор a и b

рони 14.05.2020 18:11

Цитата:

Сообщение от sovsem-nub
но что значит эта запись

(a, b) => {
a = a[field];
b = b[field];
if( a < b) return 1;
if( a > b) return -1;
return 0
}

рони 14.05.2020 19:08

сортировка массива обьектов
 
sovsem-nub,
<script>
var arrObjects = [{
    v: 8
}, {
    v: 30
}, {
    v: 3
}, {
    v: 5
}];
function compare(field, order) {
    order = order < 0 ? 1 : -1
    return function(a, b) {
        a = a[field];
        b = b[field];
        if (a < b) return order;
        if (a > b) return -order;
        return 0
    }
};
var field = 'v',
    order;
arrObjects = arrObjects.sort(compare(field, order));
document.write(JSON.stringify(arrObjects, "", 4));
document.write('<br>')
order = -1;
arrObjects = arrObjects.sort(compare(field, order));
document.write(JSON.stringify(arrObjects, "", 4));
</script>

рони 14.05.2020 19:13

sovsem-nub,
Прошу подсказки отсортировать объекты


Часовой пояс GMT +3, время: 02:52.