1.6 KiB
1.6 KiB
Блок заданий "Задание, Java Script, Node JS:" (5)
- Попробуйте проанализировать код и понять что делает следующая функция на javascript, т.е. что получит функция call_back в первом параметре.
function func(arr, call_back) {
if(!Array.isArray(arr) || arr.some(it => parseInt(it)!=it || it < 0))
call_back(null, "Неверный формат входящих данных, должен быть массив положительных чисел");
let res = [];
const f = (val) => {
res.push(val);
if(res.length==arr.length)
call_back(res);
}
for(let i = 0; i < arr.length; i++) {
setTimeout(f, arr[i], arr[i]);
}
}
Решение
- Проанализировав код, можно прийти к выводу, что перед нами функция сортировки массива. Алгоритм заключается в том, чтобы в созданный пустой массив добавлять значения через промежуток времени равный добавляемому элементу. Таким образом, например, число 7 будет добавлено в общий массив через 7 ms, а следующее после семи 2 будет добавлено через 2 ms, таким образом, двойка, которая хоть и следовала за семёркой попадёт в массив раньше семёрки и будет корректно отсортирована.