Estoy trabajando para comenzar con JavaScript. Implementé una función simple para convertir una matriz en una lista vinculada individualmente, y luego iterar sobre ella de forma recursiva para devolver el valor en una posición particular. Mi código actualmente registra undefined para todos los valores de posición excepto 0. ¿Qué hace que se comporte de esta manera?

var list = arrayToList([1,2,3,4,5]);

function arrayToList(arr) {
  var list = null;
  for (var i = arr.length - 1; i >= 0; i--) {
    list = {value : arr[i], rest: list};
  }
  return list;
}

function nth(list, count) {
  if (!list) return undefined;
  if (count == 0) return list.value;
  else nth(list.rest, count - 1);
}

console.log(nth(list,2));
0
tangierene 9 mar. 2017 a las 02:46

2 respuestas

La mejor respuesta

El problema es que la cláusula "else" en la función nth no devuelve un valor, por lo que undefined se devuelve por defecto.

1
Prisoner 8 mar. 2017 a las 23:50

Mira mi ejemplo por aquí

https://github.com/aloksguha/smartll

O puede probarlo como biblioteca de nodos. "inteligente-ll".

0
Alok G. 14 mar. 2017 a las 06:28