Почему функция возвращает undefined?

113
08 декабря 2021, 14:20

У меня есть массив, каждое значение которого обозначает сторону света:

let array = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"];

Если рядом друг с другом стоят NORTH/SOUTH или EAST/WEST, то эти значения удаляются (то же работает и для SOUTH/NORTH, и WEST/EAST). В данном случае функция должна вывести WEST, но вместо этого возвращается undefined. Кто-нибудь может объяснить, почему так происходит?

let array = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]; 
	 
let obj = { 
	"NORTH": 1, 
	"SOUTH": -1, 
	"WEST": 2, 
	"EAST": -2 
} 
 
function dirReduc(arr) { 
	for (let i = 0; i < arr.length; i++) { 
		if (i == arr.length - 1) { 
			return 1; 
		} else if (obj[arr[i]] + obj[arr[i + 1]] == 0) { 
			arr.splice(i, 2); 
			dirReduc(arr);		 
		} 
	} 
}  
 
console.log(dirReduc(array));

Answer 1

let array = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]; 
 
let obj = { 
  "NORTH": 1, 
  "SOUTH": -1, 
  "WEST": 2, 
  "EAST": -2 
} 
 
function dirReduc(arr) { 
  for (let i = 0; i < arr.length; i++) { 
    if (i == arr.length - 1) { 
      return arr[0]; // or return arr; 
    } else if (obj[arr[i]] + obj[arr[i + 1]] == 0) { 
      arr.splice(i, 2); 
      return dirReduc(arr); 
    } 
  } 
} 
 
console.log(dirReduc(array));

READ ALSO
Двойной градиент

Двойной градиент

Извините за такой глупый вопросЕсть фоновая картинка, и по макету на этой картинке есть два, идентичных по цвету, градиента, но под разными...

70
Не могу удалить элемент объекта, созданный конструктором

Не могу удалить элемент объекта, созданный конструктором

Никак не получается удалить элемент объекта, созданный конструкторомПочему так происходит?

61
Передать значение в input

Передать значение в input

Есть для примера следующая форма для заявки:

260