带条件的箭头函数不返回数组的所有元素
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?
我有一个如下所示的数组: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?