После применения методов filter()
и map()
к массиву, создается новый массив, который может иметь разную длину по сравнению со старым массивом в зависимости от того, какие элементы были отфильтрованы или какие элементы были изменены.
Метод filter()
создает новый массив, содержащий только те элементы исходного массива, для которых функция-предикат возвращает true
. Если функция-предикат не возвращает true
для всех элементов исходного массива, то новый массив будет иметь меньшую длину, чем исходный массив. Если функция-предикат возвращает true
для всех элементов исходного массива, то новый массив будет иметь такую же длину, как и исходный массив.
Например:
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(function(number) {
return number % 2 === 0;
});
console.log(numbers.length); // 5
console.log(evenNumbers.length); // 2
В этом примере мы создаем новый массив evenNumbers
, который содержит только четные числа из исходного массива numbers
. Размер нового массива evenNumbers
равен 2, тогда как исходный массив numbers
имеет размер 5.
Метод map()
создает новый массив, содержащий результаты вызова функции обратного вызова для каждого элемента исходного массива. Если функция обратного вызова изменяет каждый элемент исходного массива, то новый массив будет иметь такую же длину, как и исходный массив. Если функция обратного вызова не изменяет элементы исходного массива, то новый массив будет иметь такую же длину, как и исходный массив.
Например:
const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(function(number) {
return number * 2;
});
console.log(numbers.length); // 5
console.log(doubledNumbers.length); // 5
В этом примере мы создаем новый массив doubledNumbers
, который содержит все элементы исходного массива numbers
, умноженные на 2. Размер нового массива doubledNumbers
равен 5, так как каждый элемент исходного массива был изменен при выполнении функции обратного вызова.