Tengo un problema con este código que estoy escribiendo para un desafío.
El código que escribí entra en un bucle infinito y no puedo entender qué está mal.
var wiggleMaxLength = function(nums) { let wiggleSteps = 1; let actualDiff, pastDiff, i; for (i = 1; i < nums.length; i++) { actualDiff = (nums[i] - nums[i - 1]) if (nums[i] = 0) { nums.splice(i, 1); i--; continue; } else if ((pastDiff > 0 && actualDiff < 0) || (pastDiff < 0 && actualDiff > 0) || (i = 1)) { pastDiff = actualDiff; wiggleSteps++; } else { break; } } return wiggleSteps; };Hay un error tipográfico en la línea 6 ( = en lugar de == o === )
if (nums[i] = 0)Supongo que no lo viste.
Esto asigna el valor 0 a nums[i] , en lugar de comparar nums[i] con 0.
Por lo tanto, debe cambiar el if en
if (nums[i] == 0)o
if (nums[i] === 0) Tenga en cuenta que también hay un error tipográfico adicional en la línea 9 en la 3ra condición i = 1 en lugar de i == 1 o i === 1 , que es la razón que causa el ciclo infinito (ya que el contador 'i' siempre está re -asignado a 1). El programa siempre va en la rama else if .