Помогите стрелочную функцию переделать в нестрелочную
На хабр нашел такую функцию сортировки массива объектов
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:20. |