Как стать автором
Обновить

Комментарии 4

Комменты к ответам:

1. Использовать concat — плохая идея, асимптотика из линейной превращается в хрен знает какую. Лучше создавать на на старте массив-результат, прокидывать его в рекурсии:
function flatten(arr, r) {
    r = r || [];
    arr.forEach(item => Array.isArray(item) ? flatten(item, r) : r.push(item));
    return r;
}


2. Промис ну очень приблизительный получился. На самом деле там куча нюансов, на собеседовании тупо не хватит время это запилить.

8. в debounced функцию нельзя передать this и параметры, надо чутка допилить.

11.
Children.prototype = Object.create(Parent.prototype);
Создайте промис с нуля

Методы resolver и reject обязаны проверять текущее состояние.
Метод then обязан принимать второй аргумент.
Метод then обязан возвращать промис, который разрешается значением на основе переданного ему колбека.


Это всё — требования Promises/A+, стандарт ECMSScript накладывает ещё требования. А у вас не промис получился, а обманка какая-то, которая даже до Thenable не дотягивает...

В задаче 7 забыли вернуть значение, которое возвращает func.apply
Есть массив переменной длины. Переместите все двойки (2) в конец массива.


А ведь можно было обойтись обычным Array.sort

[2,9,1,5,2,3,1,2,7,4,3,8,29,2,4,6,54,32,2,100].sort((a,b) => b === 2 ? -1 : 0);


Всегда интересно, почему так мало уделяют внимания методам массивов-строк, и при этом смотрят связанные списки и хэш-таблицы.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий