You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 02:30:48