繁体   English   中英

如何散布数组的内部数组元素?

[英]How to spread the inner array elements of an array?

我试图传播数组的内部数组元素,但无法弄清楚它是如何工作的。

输入:

[1,2,[3,4],[5,6]]

输出:

[1,2,3,4,5,6] 

如何将第一个数组转换为第二个数组?

您可以为该数组使用生成器来检查元素,对于数组,可以返回嵌套的元素。

 function* flat() { var i = 0; while (i < this.length) { if (Array.isArray(this[i])) { this[i][Symbol.iterator] = flat; yield* this[i]; } else { yield this[i]; } i++; } } var array = [1, 2, [3, 4], [5, 6], [7, [8, 9]]]; array[Symbol.iterator] = flat; console.log([...array]); 

使用flat函数:

 var a = [1,2,[3,4],[5,6]] ; a = a.flat(); console.log(a); 

var array = [1,2,[3,4],[5,6]];
var newArray = [].concat(...array);
console.log(newArray); // [1, 2, 3, 4, 5, 6]

术语是“扁平化”-这是一个简单的单级扁平化函数:

 const arr = [1, 2, [3, 4], [5, 6]]; const flatten = a => a.reduce((acc, curr) => acc.concat(curr), []); console.log(flatten(arr)); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

深度嵌套的数组需要不同的方法-这是一个递归函数:

 const arr = [1, 2, [3, 4, "a", ["b", "c"]], [5, 6]]; const flatten = a => a.reduce((acc, curr) => acc.concat(Array.isArray(curr) ? flatten(curr) : curr), []); console.log(flatten(arr)); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM