24 lines
1.6 KiB
Markdown
24 lines
1.6 KiB
Markdown
# Блок заданий "Задание, Java Script, Node JS:" (5)
|
||
5. Попробуйте проанализировать код и понять что делает следующая функция на javascript, т.е. что получит функция call_back в первом параметре.
|
||
```javascript
|
||
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]);
|
||
}
|
||
}
|
||
```
|
||
|
||
## Решение
|
||
5. Проанализировав код, можно прийти к выводу, что перед нами функция сортировки массива. Алгоритм заключается в том, чтобы в созданный пустой массив добавлять значения через промежуток времени равный добавляемому элементу.
|
||
Таким образом, например, число 7 будет добавлено в общий массив через 7 ms, а следующее после семи 2 будет добавлено через 2 ms, таким образом, двойка, которая хоть и следовала за семёркой попадёт в массив раньше семёрки и будет корректно отсортирована. |