Javascript 返回箭头函数中的扩展数组
假设我有这种类型的数组:Javascript 返回箭头函数中的扩展数组,javascript,ecmascript-6,Javascript,Ecmascript 6,假设我有这种类型的数组: [[1,2],[3,4] 我需要做的是在更高的层上获得嵌套元素,使其看起来像: [1,2,3,4] 我正试图以函数的方式实现这一点,因此代码如下所示: const arr = [ [1, 2], [3, 4] ] const f = Array.from(arr, x => ...x) 但这带来了意外标记…错误。那么正确的方法是什么呢?您可以使用平面数组方法: constinp=[[1,2],[3,4]; console.log(inp.flat())数组。f
[[1,2],[3,4]
我需要做的是在更高的层上获得嵌套元素,使其看起来像:
[1,2,3,4]
我正试图以函数的方式实现这一点,因此代码如下所示:
const arr = [ [1, 2], [3, 4] ]
const f = Array.from(arr, x => ...x)
但这带来了
意外标记…
错误。那么正确的方法是什么呢?您可以使用平面
数组方法:
constinp=[[1,2],[3,4];
console.log(inp.flat())
数组。from
将为传入的数组中的每个项目生成一个项目。它查看传入iterable的长度
,并从0开始迭代索引。因此,无论您在回调中做什么(假设它是有效的),如果传入一个两元素数组,您都将得到一个长度为2的数组输出
reduce()
让arr=[[1,2],[3,4]]
放平=arr.reduce((arr,item)=>[…arr,…item])
log(平面)
您可以为数组创建迭代器,并使用另一个用于嵌套数组的生成器来扩展数组
函数*flat(){
for(此.slice()的变量项){
if(阵列isArray(项目)){
item[Symbol.iterator]=flat;
收益率*项目
}否则{
收益项目;
}
}
}
变量数组=[[1,2],[3,4,5,6]];
数组[Symbol.iterator]=flat;
log([…数组])代码>有一个。看看它。嵌套的元素总是数组吗?您的混淆源于这样一个事实,即扩展语法不是运算符。这是一种上下文语法。@Xufox谢谢flat
对我来说似乎很好。可能值得一提的是,它(目前)在Edge、Internet Explorer或Node上不起作用。@PatrickRoberts您使用的是哪个版本?它从chrome开始工作69@PatrickRoberts你可以在这里查看浏览器兼容性:chrome还支持flatMap
噢,我设置了一个标志,这是我的错。这很酷。如果flat()
将数组作为一个参数并递归调用,这样可能会更好,这样可以避免更改子数组的副作用。但是你必须调用[…平面(数组)]