Code Example 1: Array.prototype.flat()
❓ Что вернёт каждый вызов flat()? Как задать глубину выравнивания?
const arr1 = [1, [2, 3], [4, 5]];
console.log(arr1.flat());
const arr2 = [1, [2, [3, [4]]]];
console.log(arr2.flat(2));
console.log(arr2.flat(Infinity));
Code Example 2: flat() и пустые слоты
❓ Что произойдёт с пустыми слотами при вызове flat()?
const sparse = [1, , 3, , 5];
console.log(sparse.flat());
Code Example 3: flatMap() — разбиение строк
❓ В чём разница между map() и flatMap() в этом примере? Что будет в каждой переменной?
const sentences = ['Hello world', 'How are you'];
const withMap = sentences.map(s => s.split(' '));
console.log(withMap);
const withFlatMap = sentences.flatMap(s => s.split(' '));
console.log(withFlatMap);
Code Example 4: flatMap() — фильтрация и преобразование
❓ Как flatMap() используется для одновременной фильтрации и преобразования? Что будет в result?
const numbers = [1, 2, 3, 4, 5];
const result = numbers.flatMap(n =>
n % 2 === 0 ? [n, n] : []
);
console.log(result);
Code Example 5: flatMap vs map + flat
❓ В чём разница между этими двумя подходами с точки зрения производительности?
Version A:
const result = arr.flatMap(x => [x, x * 2]);
Version B:
const result = arr.map(x => [x, x * 2]).flat();
Code Example 6: includes() и NaN
❓ Почему indexOf не находит NaN, а includes находит?
const arr = [1, 2, NaN, 4];
console.log(arr.indexOf(NaN) !== -1);
console.log(arr.includes(NaN));
Code Example 7: Array.from() — создание массива с заполнением
❓ Что будет в range и zeros? Как работает второй аргумент Array.from()?
const range = Array.from({ length: 5 }, (_, i) => i);
console.log(range);
const zeros = Array.from({ length: 10 }, () => 0);
console.log(zeros);
Code Example 8: Array.from() с Set и Map
❓ Что вернёт Array.from() для Set и Map? Чем Array.from(set) отличается от [...set]?
const set = new Set([1, 2, 2, 3]);
const arrFromSet = Array.from(set);
console.log(arrFromSet);
const map = new Map([['a', 1], ['b', 2]]);
const arrFromMap = Array.from(map);
console.log(arrFromMap);
const doubled = Array.from(set, x => x * 2);
Code Example 9: Практический пример — уникальные теги
❓ Что будет в allTags? Как работает комбинация flatMap + Set + spread?
const users = [
{ name: 'John', tags: ['admin', 'editor'] },
{ name: 'Jane', tags: ['viewer'] }
];
const allTags = [...new Set(users.flatMap(u => u.tags))];
console.log(allTags);
Code Example 10: includes() с объектами
❓ Почему первый includes возвращает true, а второй — false?
const obj = { id: 1 };
const arr = [obj, { id: 2 }];
console.log(arr.includes(obj));
console.log(arr.includes({ id: 1 }));