@Valerka_136

Почему не работает js код?

function positiveSum(arr) {
	let newArr = arr.filter(i => i >= 0)
	if (newArr === []) {
		return 0
	} else {
		let result = newArr.map(i => x += i, x = 0).reverse()[0]
		return result
	}
}
console.log(positiveSum([-1, -2, -3, -4, -5]))


Код должен возвращать 0 если при переборе массива массив пустой, но возвращает undefined
  • Вопрос задан
  • 65 просмотров
Решения вопроса 2
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
if (newArr === [])

Потому что это сравнение ссылок двух массивов, а не проверка массива на пустоту.
[] - новый пустой массив. То есть в памяти выделилось пространство для нового массива.
Даже если newArr тоже [] то это не одно и то же, потому что массивы это ссылочный тип данных. То есть для newArr так же выделена отдельная память для массива.

Коротко: [] !== [] потому что области памяти разные для двух разных пустых массивов.

ну и примитивная аналогия: два пустых одинаковых ящика это же не один и тот же ящик, верно?
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Массив на пустоту проверяется так: newArr.length === 0
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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