这个问题已经在这里有一个答案:
我想,以减少数组的数组我阵列的尺寸为单个阵列。该结构可以是重嵌套。
我试图用减少和地图功能和运行一个循环,但它是非常复杂的。想知道如果有一个简单的解决方案
Input example: a = [[1],[2,3,['abc']],[5,[6,['def']]]]
Output expected: a = [1, 2, 3, "abc", 5, 6, "def"]
我认为这将是一个很好的例子使用新flat
功能阵列参考[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat]
let a = [[1],[2,3,['abc']],[5,[6,['def']]]]
a = a.flat(Infinity); // since the nesting may be highly deep
因为浏览器的支持不是很高,您可以使用推荐的填充工具。
替代方案是使用降低和concat,则这是在上面的链接进行说明。
//使深层次扁平化使用递归以减少和CONCAT
var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];
function flattenDeep(arr1) {
return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
}
flattenDeep(arr1);// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
您可以使用flat
与嵌套的水平,使之成为单一阵列
var a= [[1],[2,3,['abc']],[5,[6,['def']]]];
console.log(a.flat(3))