Задать вопрос
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 ведь тоже добавляет элементы новые в конец.
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
szQocks
@szQocks
Так происходит потому что метод push возвращает длину массива, а concat новый массив.
Тем самым ты изменяешь массив на длину массива когда возвращаешь длину массива
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы