如何检测未知嵌套深度数组中[]符号的总数量?
统计嵌套数组中[]符号的总数量
针对未知嵌套深度的数组,有两种常用方法统计[]符号的总数量,可根据场景选择:
方法1:转字符串统计(简单场景)
如果数组元素都是数字、布尔值、null等不含[]的非字符串类型,可以直接把数组转为JSON字符串,用正则匹配所有[和]并统计数量:
const array = [1,2,3,4,[5,6],[[[[7,8]]]]]; const jsonStr = JSON.stringify(array); const totalBrackets = (jsonStr.match(/\[|\]/g) || []).length; console.log(totalBrackets); // 输出12
这种方法代码简洁,但如果数组里有包含[]的字符串元素(比如['[abc]', 1]),会误统计字符串内的括号,不适合这类场景。
方法2:递归遍历统计(通用场景)
通过递归遍历数组的每一个元素,仅统计数组类型对应的括号对,完全避免字符串干扰:
function calculateTotalBrackets(arr) { let count = 2; // 当前数组本身的一对[] for (const item of arr) { if (Array.isArray(item)) { count += calculateTotalBrackets(item); } } return count; } const array = [1,2,3,4,[5,6],[[[[7,8]]]]]; console.log(calculateTotalBrackets(array)); // 输出12
原理:每个数组自身对应一对[](计数+2),遇到子数组时递归统计其子数组的括号数量并累加,最终得到所有[]符号的总数量。
另外补充:如果你的真实需求是扁平化任意深度的数组,不需要提前知道嵌套层级,直接使用array.flat(Infinity)即可,无需统计括号数量。
内容的提问来源于stack exchange,提问作者Vilayat Safarov
相关产品推荐
相关产品推荐

