javascript - 递归地将数组元素放入自己的数组中

标签 javascript arrays recursion

我正在尝试创建一个函数,以递归方式将每个数组元素放入其自己的数组中。

我认为我的基本情况是正确的,但我的递归调用似乎不起作用。有什么见解吗?

function ownList(arr){
  if (arr.length === 1) {
    arr[0] = [arr[0]];
    return;
  } else {
    return arr[0].concat(ownList(arr.slice(1)));
  }    
}
var arr = [1,2,3]
console.log(ownList(arr))// returns []
//should return [[1],[2],[3]]

在这里,我尝试将每一对放入它自己的列表中(仅限递归)。下面的代码是正确的(更新)

function ownListPair(arr){
  if (arr.length === 0)
    return arr;
  else if(arr.length === 1)
    return [[arr[0], 0]];
  else 
    return [[arr[0], arr[1]]].concat(ownListPair(arr.slice(2)));
}

// var arr = [3,6,8,1,5]
var arr = [2,7,8,3,1,4]
//returns [ [ 2, 7 ], [ 8, 3 ], [ 1, 4 ]]
console.log(ownListPair(arr))

最佳答案

我更喜欢这个解决方案有几个原因:

function ownList(a) {
  return a.length == 0
      ? []
      : [[a[0]]].concat(ownList(a.slice(1))) 
}
  • 更短、更简洁
  • 它也适用于空数组
  • 实际换行仅在最后一行发生一次。按照其他人的建议,单独处理 length == 1 是没有必要的。

关于javascript - 递归地将数组元素放入自己的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460328/

相关文章:

java - 与 Math.pow() 一起使用时无法获得正确的数字乘积

c# - 如何在 MVC 核心中创建多级菜单?

javascript - 如何在 next.config.js 文件中组合几个插件?

javascript - javascript对象是按引用还是按值传递的

javascript - 生成具有数字子集范围的数组的数组函数

javascript - 如何打印另一个数组中的数组值而不是 "[object]"

arrays - Python NumPy : Selecting array entries based on input array

javascript - Angular : HTML5 style URL is rendering with no stylesheet

javascript - 如何将javascript变量值传递给django中的views.py函数?

java - 在不断缩小的 LispList 中递归查找 INT 的索引