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

如何提取对象及其嵌套子对象中指定key对应的value值?

提取嵌套对象/数组中的value值

我从表单输出中得到一个对象,部分字段是包含value键的嵌套对象或数组,需要提取所有value键对应的内容,同时保留原数据的结构。

原对象

{
  inputA: 1354,
  inputB: "String Value",
  inputC: [
    {
      value: 1,
      label: "Value 1"
    },
    {
      value: 2,
      label: "Value 2"
    },
    {
      value: 4,
      label: "Value 3"
    }
  ],
  inputD: {
    value: 16,
    label: "Value 16"
  },
  inputE: {
    value: 1,
    label: "Value 1"
  },
  inputF: {
    subInputA: {
      value: "String Value",
      label: "Value of Value"
    },
    subInputB: {
      value: 1,
      label: "Value 1"
    }
  }
}

期望结果

{
  inputA: 1354,
  inputB: "String Value",
  inputC: [1,2,4],
  inputD: 16,
  inputE: 1,
  inputF: {
    subInputA: "String Value",
    subInputB: 1
  }
}

实现方案

写一个递归函数遍历数据,按以下规则处理:

  • 数组:遍历每个元素并递归处理,返回新数组
  • 含value键的对象:直接返回value对应的值
  • 普通对象:遍历所有键值对,递归处理值后构建新对象
  • 基础类型(数字、字符串等):直接返回

代码实现:

function extractValues(data) {
  if (Array.isArray(data)) {
    return data.map(item => extractValues(item));
  }
  if (typeof data === 'object' && data !== null && 'value' in data) {
    return data.value;
  }
  if (typeof data === 'object' && data !== null) {
    const result = {};
    for (const key in data) {
      if (data.hasOwnProperty(key)) {
        result[key] = extractValues(data[key]);
      }
    }
    return result;
  }
  return data;
}

使用方式:

// 传入原对象调用函数
const processedData = extractValues(originalData);
console.log(processedData);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:54:36