let users = [
{ name: "John", age: 20, surname: "Johnson" },
{ name: "Pete", age: 18, surname: "Peterson" },
{ name: "Ann", age: 19, surname: "Hathaway" }
];
function byField(field) {
return (a, b) => a[field] > b[field] ? 1 : -1;
}
users.sort(byField('name'));
users.forEach(user => console.log(user.name));
Помимо всего прочего в функциональном программировании есть такое понятие функция высшего порядка (high order function).
Функция высшего порядка - это функция принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата.
Основная идея состоит в том, что функции имеют тот же статус, что и другие объекты.
—-
Теперь о Вашем коде, функция byField
-функция высшего порядка, которая возвращает стрелочную функцию с двумя входными аргументами a и b.
В свою очередь функция массива sort
тоже функция высшего порядка которая принимает в качестве аргумента функцию.
Алгоритм сортировки,реализованный в методе sort
, грубо говоря, перебирает пары значений и делает перестановки.
Функция, которую Вы передаете будет применяться к парам значений в процессе сортировки, для выяснения факта, какое значение в исследуемой паре больше.
—-
PS: Если Вы добавите логгирование в стрелочную функцию, которую Вы передаете в метод сортировки, Вы увидите сколько раз и с какими аргументами она вызвалась во время этой сортировки.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
С помощью combobox пытаюсь изменять размер изображениеДелаю это вот таким образом
Всем приветВторой день бьюсь головой и не могу наследоваться от класса QNetworkReply
Есть такой простой пример, в котором происходит использование пула на 70 потоков и создание в каждом std::promise: