我有一个嵌套阵列并需要将其降低到一个维阵列[复制]

问题描述 投票:-1回答:2

这个问题已经在这里有一个答案:

我想,以减少数组的数组我阵列的尺寸为单个阵列。该结构可以是重嵌套。

我试图用减少和地图功能和运行一个循环,但它是非常复杂的。想知道如果有一个简单的解决方案

Input example:  a = [[1],[2,3,['abc']],[5,[6,['def']]]]
Output expected: a = [1, 2, 3, "abc", 5, 6, "def"]
javascript arrays
2个回答
1
投票

我认为这将是一个很好的例子使用新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]

0
投票

您可以使用flat与嵌套的水平,使之成为单一阵列

var a= [[1],[2,3,['abc']],[5,[6,['def']]]];
console.log(a.flat(3))
© www.soinside.com 2019 - 2024. All rights reserved.