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

如何检索JSON中值为true的动态键并拼接为目标字符串?

问题描述

我有如下JSON响应:

{
  "A":{"Option1":true,"Option2":true,"Option3":false},
  "B":{"OptionX":true,"OptionY":true,"OptionZ":false}
}

我希望获取值为true的选项名称,组成字符串:Option1, Option2, OptionX, OptionY

我尝试了以下代码但未成功:

Array.from(this.model).forEach(child => {
  console.log(child, 'child name')
});
解决方案

你之前的代码无效是因为this.model是普通对象,Array.from()无法直接将其转为可遍历的数组。这里提供两种可行的实现方式:

  • 方式一:基础遍历写法
const optionNames = [];
// 遍历外层对象的每个属性(A、B)
for (const group of Object.values(this.model)) {
  // 遍历子对象的每个选项
  for (const [name, value] of Object.entries(group)) {
    if (value) {
      optionNames.push(name);
    }
  }
}
// 拼接成目标字符串
const resultStr = optionNames.join(', ');
console.log(resultStr); // 输出:Option1, Option2, OptionX, OptionY
  • 方式二:链式函数写法(更简洁)
const resultStr = Object.values(this.model)
  .flatMap(group => 
    Object.entries(group)
      .filter(([_, isEnabled]) => isEnabled)
      .map(([name]) => name)
  )
  .join(', ');

console.log(resultStr);

关键说明

  1. Object.values(this.model):获取外层对象的所有子对象(即A、B对应的对象)
  2. Object.entries(group):把子对象转为[选项名, 布尔值]的数组,方便筛选
  3. flatMap:将多个子数组的结果合并成一个数组,避免嵌套
  4. join(', '):把数组元素按指定分隔符拼接成字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:37:13