为了账号安全,请及时绑定邮箱和手机立即绑定

最效率获得俩个数组的相同值

最效率获得俩个数组的相同值

江户川乱折腾 2019-05-24 09:44:20
letarr1=['a','b','c','d','e']letarr2=['c','d','g','h','a']找到arr1和arr2中相同的值,并在arr2中删除对应的值怎么写才更简单效率,我只能想到套个双层循环,就比如这样arr1.forEach((val)=>{arr2.forEach((v,i)=>{val===v&&arr2.splice(i,1)})})然后现在问题变了arr2=[{'id':'c'},{'id':'d'},{'id':'g'},{'id':'h'},{'id':'a'}]我的只要改一个地方就能继续运行arr1.forEach((val)=>{arr2.forEach((v,i)=>{val===v.id&&arr2.splice(i,1)})})你们代码需要怎么改才能实现原来的目的,改动最少最简单的,我认为是最合理的就采纳了
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

letarr1=['a','b','c','d','e']
letarr2=['c','d','g','h','a']
letres=[]
vara=arr2.filter(v=>{
if(arr1.indexOf(v)>=0){
res.push(v)
}
returnarr1.indexOf(v)<0
})
res//["c","d","a"]
a//["g","h"]
                            
查看完整回答
反对 回复 2019-05-24
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

array转dict
letarr1=['a','b','c','d','e']
letarr2=['c','d','g','h','a']
letobj=arr1.reduce((iter,val)=>{
iter[val]=true
returniter
},{})
letresult=arr2.filter(v=>!obj[v])
console.log(result)
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 399 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号