Javascript Сравните 2 массива объекта на основе ключа и значения - PullRequest
0 голосов
/ 01 марта 2019

У меня есть 2 массива объектов ниже.Я хочу сравнить оба и проверить соответствующий случайный код и получить оценку на основе соответствующего случайного кода.Я предоставил пример результата ниже.Спасибо

me.records.data1 (массив объектов)

[
        {
            id: 345,
            user: 223,
            random_code: "50-3910111611011",
            created_at: "2019-03-01",
            is_verified: false,
            …
        }   1:{
        id: 346,
            user:223,
                random_code:"50-101966854102",
                    created_at:"2019-03-01",
                        is_verified:false,
      …
   }
]

me.records.data2 (массив объектов)

[  
   {  
      id:161,
      questionaire_content:80,
      questionaire_content_choice:272,
      created_at:"2019-03-01",
      random_code:"50-3910111611011",
      score:"0",
      …
   }   1:{  
      id:162,
      questionaire_content:79,
      questionaire_content_choice:270,
      created_at:"2019-03-01",
      random_code:"50-101966854102",
      score:"1",
      …
   }
]

результат должен быть такимна основании приведенных выше данных.

]{  
id:345,
user:223,
random_code:"50-3910111611011",
created_at:"2019-03-01",
score:0,
is_verified:false,
…
}{  
id:346,
user:223,
random_code:"50-101966854102",
created_at:"2019-03-01",
score:1,
is_verified:false,
…
}

]

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Что вам нужно сделать:

  1. Итерация по исходному массиву.
  2. Для каждого элемента в исходном массиве получите ключ «random_code» для объекта исохранить значение во временной переменной.
  3. В массиве показателей найдите объект, чей «random_code» совпадает с тем, который хранится во временной переменной, если он найден, вернуть значение ключа «Score».

const source = [
  {
    id: 345,
    user: 223,
    random_code: "50-3910111611011",
    created_at: "2019-03-01",
    is_verified: false,
  }, {
    id: 346,
    user:223,
    random_code:"50-101966854102",
    created_at:"2019-03-01",
    is_verified:false,
  }
];

const scores = [
  {  
      id:161,
      questionaire_content:80,
      questionaire_content_choice:272,
      created_at:"2019-03-01",
      random_code:"50-3910111611011",
      score:"0",
   }, {  
      id:162,
      questionaire_content:79,
      questionaire_content_choice:270,
      created_at:"2019-03-01",
      random_code:"50-101966854102",
      score:"1",
   }
];

// function to get the value of score key from scores array for matching random code.
const getScoreForRandomCode = (randomCode) => {
  for (let index = 0; index < scores.length; index++) {
    const tempScore = scores[index];
    if (tempScore.random_code === randomCode) {
      return tempScore.score;
    }
  }
}

const result = source.map ((item) => {
  const randomCode = item.random_code;
  const score = getScoreForRandomCode (randomCode);
  return {
    ...item,
    score: score || 'NA'
  };
});

console.log (result);
0 голосов
/ 01 марта 2019

Используйте forEach для циклического перебора me.records.data1 и сопоставления random_code внутри me.records.data2.Когда случайный код совпадает, присвойте data2.score me.records.data1.

me.records.data1.forEach(function(obj){  
    var bscore = ""; 
    data2 = me.records.data2.find(function(i) { if(i.random_code === obj.random_code) return i.score; });
    if(bscore!="") obj.score = data2.score;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...