在尝试返回数字时,Javascript将Number转换为unsifined

时间:2018-03-29 08:38:57

标签: javascript node.js list numbers undefined

所以我有以下函数将数组转换为列表并正常工作:

    function arrayToList (arr) {
      var list = null
      arr.reverse()
      for (var i = 0; i < arr.length; i++) {
        list = {value: arr[i], rest: list}
      }

      return list
    }

现在我正在尝试编写一个返回列表第n个值的函数

function nth (list, number) {
  if (number !== 0) {
    nth(list.rest, number - 1)
  } else {
    console.log(typeof list.value)
    return list.value
  }
}

如果我运行第n个(list,0)它工作正常,但是当我在函数console.log中将索引(数字)更改为其他东西(例如1,2等)时,显示list.value的类型是数字,但它返回的是未定义的 P.S:我使用node.js版本6.11.4来运行我的代码

2 个答案:

答案 0 :(得分:4)

您还需要return来自中间调用

return nth(list.rest, number - 1) //observe that return before nth

function nth (list, number) {
  if (number !== 0) {
    return nth(list.rest, number - 1);
  } else {
    console.log(typeof list.value)
    return list.value;
  }
}

<强>演示

&#13;
&#13;
function arrayToList(arr) {
  var list = null
  arr.reverse()
  for (var i = 0; i < arr.length; i++) {
    list = {
      value: arr[i],
      rest: list
    }
  }

  return list
}

function nth (list, number) {
  if (number !== 0) {
    return nth(list.rest, number - 1);
  } else {
    //console.log(typeof list.value)
    return list.value;
  }
}

var arr = [1,2,3,4,5,6];
var list = arrayToList(arr);
console.log(nth(list,2));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

在if条件中使用它 -

return nth(list.rest, number - 1)

或者只是在你的其他情况下使用它而不是返回值 -

console.log(list.value); 

根据您的使用情况使用它。