Map преобразует элементы, filter отбирает их, some/every проверяют условие, includes ищет значение. Unshift и splice изменяют массив, slice возвращает копию части.
Исследование поведения основных методов массивов и объектов в JavaScript
Map преобразует элементы, filter отбирает их, some/every проверяют условие, includes ищет значение. Unshift и splice изменяют массив, slice возвращает копию части.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Подставьте вместо знаков вопроса подходящие аргументы или функции и укажите, какой результат вернёт каждый вызов:
[1, 2, 3].map(?) // ?
[1, 2, 3].filter(?) // ?
[1, 2, 3].some(?) // ?
[1, 2, 3].every(?) // ?
[1, 2, 3].includes(?) // ?
[1, 2, 3].unshift(?) // ?
[1, 2, 3].slice(?) // ?
[1, 2, 3].splice(?) // ?
Object.create(?) // ?
Object.assign(?) // ?
Object.prototype.hasOwnProperty(?) // ?
Ответ
Map преобразует элементы, filter отбирает их, some/every проверяют условие, includes ищет значение. Unshift и splice изменяют массив, slice возвращает копию части.
Примеры независимых вызовов:
[1,2,3].map(x => x * 2); // [2,4,6]
[1,2,3].filter(x => x > 1); // [2,3]
[1,2,3].some(x => x === 2); // true
[1,2,3].every(x => x > 0); // true
[1,2,3].includes(4); // false
[1,2,3].unshift(0); // 4 — новая длина
[1,2,3].slice(1); // [2,3]
[1,2,3].splice(1,1); // [2] — удалённые элементы
Object.create(null); // объект без прототипа
Object.assign({}, { a: 1 }); // { a: 1 }
Object.prototype.hasOwnProperty.call({ a: 1 }, 'a'); // true
У последнего метода важен this: прямой вызов из условия проверял бы свойство самого Object.prototype.