通过比较两个列表获取值

Fetch value by comparing two list

需要比较两个 id,获取 symptomValue 并推入 symptomsFormArray。

"partcipantData": [
    {
      "symptomId": 8651,
      "symptomValue": "N"
    },
    {
      "symptomId": 8646,
      "symptomValue": "N"
    },
    {
      "symptomId": 8642,
      "symptomValue": "N"
    }
]


var symptomsParams = [
  {
    "id": 8651,
    "value": "Abdominal pain"
  },
  {
    "id": 8646,
    "value": "Chest pain"
  },
  {
    "id": 8642,
    "value": "Cough"
  }
]

需要比较两个 id,获取 symptomValue 并推入 symptomsFormArray。

 this.symptomsParams.forEach(childObj =>{
              let val = this.partcipantData.filter(obj => obj.symptomId == childObj.id)
            
              this.symptomsFormArray.push(new FormControl(val.symptomValue))
              });
              

这里的 val 值总是 return 未定义,有没有其他方法可以实现这个?

假设您想从 symptomsParams 中筛选参与者数据,您只需使用数组映射和筛选器

const symptomsParams = [
    {
      "symptomId": 8651,
      "symptomValue": "N"
    },
    {
      "symptomId": 8646,
      "symptomValue": "N"
    },
    {
      "symptomId": 8642,
      "symptomValue": "N"
    }
];

const partcipantData = [
  {
    "id": 8651,
    "value": "Abdominal pain"
  },
  {
    "id": 8646,
    "value": "Chest pain"
  },
  {
    "id": 8642,
    "value": "Cough"
  }
];

const symptomIds = symptomsParams.map(s => s.symptomId);
const filteredSymptomValues = partcipantData
  .filter(p => symptomIds.includes(p.id))
  .map(p => p.value);

console.log(filteredSymptomValues);

然后将症状推送到数组

filteredSymptomValues.forEach(value => this.symptomsFormArray.push(new FormControl(value)))