Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2020, 17:32
Аватар для sovsem-nub
Профессор
Отправить личное сообщение для sovsem-nub Посмотреть профиль Найти все сообщения от sovsem-nub
 
Регистрация: 15.10.2014
Сообщений: 255

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

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

Последний раз редактировалось sovsem-nub, 14.05.2020 в 17:46.
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2020, 18:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от 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:03.
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2020, 19:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

сортировка массива обьектов
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>
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2020, 19:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Помогите настроить функцию _di jQuery 0 04.04.2011 23:52
Помогите вынести обработчик события в функцию. prowoke Events/DOM/Window 3 25.03.2011 00:55
Помогите пожалуйста дописать 1 функцию (onmouseout) -user21- Элементы интерфейса 0 09.06.2010 22:04
Помогите!!! Из нового окна вызвать функцию ignavr Элементы интерфейса 5 13.12.2009 13:04