带条件的箭头函数不返回数组的所有元素

Arrow function with conditionals not returning all elements of array

我有一个如下所示的数组:var arr = ['one', 'two', ['three', 'four']];

当尝试使用箭头函数 return 每个元素时,它 returns undefined 作为第三个元素,而不是元素值。我试图重组它,但是 none of then return 两个数组的所有元素。我可以使用 for 循环,执行推送每个元素的逻辑,但我想了解并学习如何在这种情况下使用箭头函数。

arr.map(e => {
 if(typeof(e) == "object"){
    e.map(t => t)
  } else{ return e; }
})

非常感谢对此事的一些澄清。预期结果是一个如下所示的数组:['one'、'two'、'three'、'four'].

为了达到预期的结果,使用下面的选项使用 reduce to return array

中的所有数组元素

var arr = ['one', 'two', ['three', 'four']];

console.log(arr.reduce((acc, v) => {
  typeof(v) == 'object' ? acc.push(...v) : acc.push(v)
  return acc
}, []))



           

codepen - https://codepen.io/nagasai/pen/NJKdKv

Array.prototype.map() 的设计和实现不是为了展平数组。即使 .map() 确实展平了一个数组 e.map(t => t) 也不是 return.map() 问题代码处的回调函数编辑的。

arr.map(e => {
 if(typeof(e) == "object"){
    e.map(t => t) // no value is `return`ed here
  } else{ return e; }
})

有多种方法和 Array 方法可用于展平 Array,包括 .flat().flatMap().concat(),例如,参见 Merge/flatten an array of arrays in JavaScript?