Javascript JS中的MyFlant-递归调用未给出预期返回

Javascript JS中的MyFlant-递归调用未给出预期返回,javascript,Javascript,我是JS新手,目前正在尝试解决一些经典的编码算法,以熟悉该语言。我来自基础Ruby bg。我目前正在开发一个硬编码版本的“展平”功能,但没有得到所需的输出。我已经多次修改我的逻辑,我不知道我的错误是什么 这是我的密码: 函数的输入是一个多维数组,输出应该是它的平坦版本。我得到的是相同的输入数组 function myFlatten(arr){ var flattenArr = []; for (var i = 0; i < arr.length; i +=1){ var

我是JS新手,目前正在尝试解决一些经典的编码算法,以熟悉该语言。我来自基础Ruby bg。我目前正在开发一个硬编码版本的“展平”功能,但没有得到所需的输出。我已经多次修改我的逻辑,我不知道我的错误是什么

这是我的密码:

函数的输入是一个多维数组,输出应该是它的平坦版本。我得到的是相同的输入数组

 function  myFlatten(arr){
  var flattenArr = [];
  for (var i = 0; i < arr.length; i +=1){
    var ele = arr[i];
    if(Array.isArray(ele)){
      flattenArr.push(myFlatten(ele));
    }else {
      flattenArr.push(ele);
    }
  }
  return flattenArr;
}
函数MyFlatte(arr){
var=arr[];
对于(变量i=0;i
使用ES6,您可以将值作为推送()的参数进行传播


你可以这样做

function myFlatten(arr) {
  return arr.reduce(function (flat, toFlatten) {
     return flat.concat(Array.isArray(toFlatten) ? myFlatten(toFlatten) : toFlatten);
   }, []);
}

myflant
返回一个数组<代码>展平推送(MyFlatte(ele))所以你没有压扁任何东西。对。。。我在弄清楚如何将元素推到tho上时遇到了一些困难。我以为所有的元素一旦不是数组就会被推到Flattarr中。。。因此,当他们“击中”其他人时……你可以使用
concat
如此怪异。。。我也试过了,但没用。这个语法正确吗:flattarr.concat(myflatte(ele))?它是这样工作的,现在我正在阅读关于spread语法参数的文章。我对它一点也不熟悉。谢谢
function myFlatten(arr) {
  return arr.reduce(function (flat, toFlatten) {
     return flat.concat(Array.isArray(toFlatten) ? myFlatten(toFlatten) : toFlatten);
   }, []);
}