Проверьте, содержит ли второй массив элемент первого массива, и покажите, что - PullRequest
1 голос
/ 13 марта 2020

Проверьте, содержит ли второй массив элемент первого массива, затем покажите, что в противном случае показывает второй элемент массива (которого нет в первом)

var contacts = [{name:'muzz',no:1},{name:'muzamil',no:2},{name:'hamza',no:3}]

var recipient = ['2','4']

function check () {
   contacts.forEach(({name,no}) => {
          if(recipient.includes(no.toString())){
           console.log('exists',name)
          } 
        else {
            recipient.forEach(e =>{
                if(!recipient.includes(no.toString()) && contacts == no){
                    console.log(e);

                }
            })
       }
   })
}

, пожалуйста, скажите мне, чего мне здесь не хватает. Блок else снова пересекает все элементы

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Сначала вы можете l oop через массив получатель , а затем отфильтровать объект из массива contacts , сопоставив текущий получатель :

var contacts = [{name:'muzz',no:1},{name:'muzamil',no:2},{name:'hamza',no:3}]

var recipient = ['2','4']

function check () {
  recipient.forEach(r => {
    var c = contacts.filter(c => c.no == r);
    if(c.length){
      console.log('exists',c[0].name)
    } 
    else {
      console.log(r);
    }
  });
}
check();
0 голосов
/ 13 марта 2020

Это то, что вы хотите?

function resolve (a, b) {
    const map = a.reduce((acc, {no}, i) => (acc[no] = a[i], acc), {})
    return b.reduce((acc, el) => (acc.push(map[el]?.name ?? el), acc), [])
}

var contacts = [{name:'muzz',no:1},{name:'muzamil',no:2},{name:'hamza',no:3}]
var recipients = ['2','4']
const resolved = resolve(contacts, recipients)
console.log(resolved)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...