Помогите стрелочную функцию переделать в нестрелочную
На хабр нашел такую функцию сортировки массива объектов
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 |
Цитата:
(a, b) => { a = a[field]; b = b[field]; if( a < b) return 1; if( a > b) return -1; return 0 } |
сортировка массива обьектов
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> |
sovsem-nub,
Прошу подсказки отсортировать объекты |
Часовой пояс GMT +3, время: 02:52. |