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

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

Войти через центр авторизации
Похожие вопросы