如何根据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
相关产品推荐
相关产品推荐

