JavaScript中如何从多维数组提取字符串值生成新数组
从多维数组中提取所有字符串值到新数组
下面提供两种实用的实现方案,适配不同场景需求:
方法1:递归遍历(支持任意嵌套深度)
通过递归遍历数组的每一项,判断元素类型后收集字符串,适合不确定数组嵌套层级的场景:
function extractStrings(arr) { const result = []; function traverse(item) { // 是字符串就加入结果数组 if (typeof item === 'string') { result.push(item); } // 是数组就继续递归遍历内部元素 else if (Array.isArray(item)) { item.forEach(traverse); } // 非字符串/非数组的元素直接忽略 } arr.forEach(traverse); return result; } // 测试示例 var dimStr = [ "First-one", ["Double-one", "Double-two", "Double-three", ["Triple-one", "Triple-two"] ], "First-two" ] ; const output = extractStrings(dimStr); console.log(output); // 输出: ["First-one", "Double-one", "Double-two", "Double-three", "Triple-one", "Triple-two", "First-two"]
方法2:Array.flat() + 过滤(代码简洁,适合快速实现)
如果不需要考虑性能损耗,或者数组嵌套层级明确,可直接用flat()拍平数组后过滤字符串:
var dimStr = [ "First-one", ["Double-one", "Double-two", "Double-three", ["Triple-one", "Triple-two"] ], "First-two" ] ; // flat(Infinity) 直接拍平所有嵌套层级,再筛选字符串 const output = dimStr.flat(Infinity).filter(item => typeof item === 'string'); console.log(output); // 输出和上述结果一致
内容的提问来源于stack exchange,提问作者Seventh-Floor Officials
相关产品推荐
相关产品推荐

