logicface
@logicface
Начинающий

Почему метод push не работает в тандеме c reduce?

Почему этот код не работает с методом push, но работает через concat и [...var, var] (хотя я не совсем понимаю что в этих скобках происходит, просто видел, что так делают)?

let arr = [1, 2, 3, 4, 5]

let xarr = arr.reduce((acc, item) => {
	if (item > 2) {
		return acc.push(item); // Если поменять на [...acc, item] или вместо push написать concat —заработает.
	}
	return acc
}, []);

console.log(xarr);

Можно ли заставить его работать с push? И вообще, мне важно понять почему оно так не работает... Concat ведь тоже добавляет элементы новые в конец.
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
szQocks
@szQocks
Так происходит потому что метод push возвращает длину массива, а concat новый массив.
Тем самым ты изменяешь массив на длину массива когда возвращаешь длину массива
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 03:11
500 руб./за проект
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект