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

如何提取嵌套对象数组中的dateOfBirth字段生成一维数字数组

解决方案

你当前的代码只做了一层属性提取,没有处理dateOfBirth为嵌套数组的场景,也没有对返回的嵌套结构做拍平,用以下方案均可实现需求:

方案1:flatMap+递归(支持任意深度嵌套,现代JS环境推荐)

// 递归提取dateOfBirth字段值
const extractDateOfBirth = (item) => {
  const value = item.dateOfBirth;
  return Array.isArray(value) ? value.map(extractDateOfBirth) : value;
}

// flatMap会自动把map返回的嵌套数组拍平1层,配合递归即可得到一维数组
const finalArray = someJsonArray.flatMap(extractDateOfBirth);
console.log(finalArray); // 输出 [25, 27, 35]

方案2:递归遍历收集(兼容所有JS环境,不受版本限制)

function getAllDateOfBirth(sourceArr, result = []) {
  for (let i = 0; i < sourceArr.length; i++) {
    const currentVal = sourceArr[i].dateOfBirth;
    if (Array.isArray(currentVal)) {
      // 嵌套数组时递归调用收集值
      getAllDateOfBirth(currentVal, result);
    } else {
      // 数字类型直接存入结果数组
      result.push(currentVal);
    }
  }
  return result;
}

const finalArray = getAllDateOfBirth(someJsonArray);
console.log(finalArray); // 输出 [25, 27, 35]

如果你的场景下嵌套深度固定最多只有1层,也可以不用递归,直接判断类型处理:

const finalArray = someJsonArray.reduce((res, item) => {
  const val = item.dateOfBirth;
  if (Array.isArray(val)) {
    val.forEach(sub => res.push(sub.dateOfBirth));
  } else {
    res.push(val);
  }
  return res;
}, []);

内容的提问来源于stack exchange,提问作者user16352891

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:57:02