我正在尝试扩展数组的内部数组元素,但无法弄清楚它是如何工作的。
输入:
[1,2,[3,4],[5,6]]
输出:
[1,2,3,4,5,6]
如何将第一个数组转换为第二个数组?
答案 0 :(得分:1)
您可以为数组生成一个检查元素的生成器,对于数组,它返回嵌套的元素。
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]);
答案 1 :(得分:0)
答案 2 :(得分:0)
var array = [1,2,[3,4],[5,6]];
var newArray = [].concat(...array);
console.log(newArray); // [1, 2, 3, 4, 5, 6]
答案 3 :(得分:0)
术语是“扁平化”-这是一个简单的一级扁平化功能:
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; }