Получить значение, сравнив два списка - PullRequest
0 голосов
/ 10 июля 2020

Необходимо сравнить оба идентификатора и получить симптомValue и pu sh в sizesFormArray.

"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"
  }
]

Необходимо сравнить оба идентификатора и получить симптомValue и pu sh в sizesFormArray.

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

Здесь значение val всегда возвращает undefined. Есть ли другой способ добиться этого?

1 Ответ

1 голос
/ 10 июля 2020

Предполагая, что вы хотите отфильтровать данные участников из 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);

а затем pu sh это симптомы формируют массив

filteredSymptomValues.forEach(value => this.symptomsFormArray.push(new FormControl(value)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...