Javascript 检查第二个数组是否包含第一个数组';s元素,然后显示

Javascript 检查第二个数组是否包含第一个数组';s元素,然后显示,javascript,arrays,Javascript,Arrays,检查第二个数组是否包含第一个数组的元素,然后显示,否则显示第二个数组元素(不在第一个数组中) 请告诉我这里缺少什么。else块再次遍历所有元素您可以先在收件人数组中循环,然后通过匹配当前收件人从联系人数组中筛选对象: var contacts=[{name:'muzz',no:1},{name:'muzamil',no:2},{name:'hamza',no:3}] var recipient=['2','4'] 函数检查(){ recipient.forEach(r=>{ var c=con

检查第二个数组是否包含第一个数组的元素,然后显示,否则显示第二个数组元素(不在第一个数组中)

请告诉我这里缺少什么。else块再次遍历所有元素

您可以先在收件人数组中循环,然后通过匹配当前收件人从联系人数组中筛选对象:

var contacts=[{name:'muzz',no:1},{name:'muzamil',no:2},{name:'hamza',no:3}]
var recipient=['2','4']
函数检查(){
recipient.forEach(r=>{
var c=contacts.filter(c=>c.no==r);
如果(c.长度){
console.log('exists',c[0].name)
} 
否则{
控制台日志(r);
}
});
}
检查()这就是你想要的吗

函数解析(a,b){
const map=a.reduce((acc,{no},i)=>(acc[no]=a[i],acc),{})
返回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=解析(联系人、收件人)

console.log(已解决)
contacts==no
当您将号码与数组进行比较时,总是会出错。我知道实现我的目标的解决方案是什么。您期望的输出是什么?如果第二个数组中存在联系人,我期望联系人的名称,否则只显示联系人数组中未包含的收件人号码。i、 e输出应为->muzamil,4@Muzamilijaz,我已经发布了我的答案,请检查:)
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);

                }
            })
       }
   })
}