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

如何根据Array2匹配获取Array1中的FK_Diagnosis_Content_ID值

解决方法:根据选中分类值匹配对应ID

没问题,这个需求其实用数组的遍历和匹配就能轻松实现,我给你用JavaScript写个示例(毕竟处理JSON最常用这个),步骤很清晰:

首先先把你的两个数据修正成合法的JSON格式(注意JSON要求双引号,你的Array2原来用了单引号,得改过来):

const Array1 = [
  {
    "name": "Primary Category",
    "value": [
      { "value": "Fracture", "Diagnosis_Code": ["DIAG003"], "name": "Primary Category", "FK_Diagnosis_Content_ID": 3, "FK_Diagnosis_Category_ID": 1 },
      { "value": "Osteoarthritis", "Diagnosis_Code": ["DIAG001"], "name": "Primary Category", "FK_Diagnosis_Content_ID": 1, "FK_Diagnosis_Category_ID": 1 },
      { "value": "Osteonecrosis", "Diagnosis_Code": ["DIAG002", "DIAG004"], "name": "Primary Category", "FK_Diagnosis_Content_ID": 2, "FK_Diagnosis_Category_ID": 1 }
    ]
  },
  {
    "name": "Anatomy",
    "value": [
      { "value": "Hip", "Diagnosis_Code": ["DIAG001"], "name": "Anatomy", "FK_Diagnosis_Content_ID": 4, "FK_Diagnosis_Category_ID": 2 },
      { "value": "Pelvis", "Diagnosis_Code": ["DIAG002", "DIAG003", "DIAG004"], "name": "Anatomy", "FK_Diagnosis_Content_ID": 6, "FK_Diagnosis_Category_ID": 2 }
    ]
  }
];

// 修正为合法JSON格式
const Array2 = { 
  "Primary Category": "Fracture", 
  "Anatomy": "Pelvis" 
};

然后写核心的匹配函数:

function getTargetContentIds(sourceArray, selectionObj) {
  const resultIds = [];
  
  // 遍历选中的每个分类和对应值
  for (const [categoryName, selectedValue] of Object.entries(selectionObj)) {
    // 先找到Array1中对应的分类组
    const categoryGroup = sourceArray.find(group => group.name === categoryName);
    if (!categoryGroup) continue; // 如果找不到对应分类,直接跳过
    
    // 在分类组里找到匹配选中值的项
    const targetItem = categoryGroup.value.find(item => item.value === selectedValue);
    if (targetItem) {
      resultIds.push(targetItem.FK_Diagnosis_Content_ID);
    }
  }
  
  return resultIds;
}

// 调用函数获取结果
const finalIds = getTargetContentIds(Array1, Array2);
console.log(finalIds); // 输出: [3, 6]

这里要提个小细节:你说预期结果是[2,6],但根据你给的Array1,Fracture对应的FK_Diagnosis_Content_ID是3,只有Osteonecrosis对应的才是2。如果确实想要[2,6],只需要把Array2里的"Primary Category"值改成"Osteonecrosis"就行,运行后就会得到你要的结果。

简单说下逻辑:

  • 用Object.entries把Array2这个对象拆成「分类名-选中值」的键值对,方便遍历
  • 用find方法在Array1里定位到对应的分类组
  • 再在分类组的子数组里找到匹配选中值的项,取出对应的ID
  • 把所有找到的ID收集起来就是最终结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:28:02