Javascript 如何使用array.find将其与其他对象进行比较

Javascript 如何使用array.find将其与其他对象进行比较,javascript,arrays,vue.js,Javascript,Arrays,Vue.js,我有两个javascript数组对象设计和文章 var designs = [ { design_id:"bwbmbqlujurv", article_id:14782, name:"adidas demogorgon black" }, { design_id:"lg9yba2gkcwr", article_id:14782, name:"harry potter wand" }, { design

我有两个javascript数组对象设计文章

var designs = [
    {
        design_id:"bwbmbqlujurv", article_id:14782, name:"adidas demogorgon black"

    }, 
    {
        design_id:"lg9yba2gkcwr", article_id:14782, name:"harry potter wand"

    }, 
    {
        design_id:"ztvx3yikkkyx", article_id:5570, name:"hogwarts map"
    }, 
    {
        design_id:"hlzd4afi9en5", article_id:5570, name:"lannister lion"
    }, 
    {
        design_id:"sdwererefwff", article_id:14782, name:"pokemon bulbasaur"
    },
];

var articles = [
    {
        article_id:6508, dsn_shared_art_id:null, name:"tee man two sides"
    },
    {
        article_id:13510, dsn_shared_art_id:null, name:"tee woman two sides"
    },
    {
        article_id:5570, dsn_shared_art_id:null, name:"necktie"
    },
    {
        article_id:14782, dsn_shared_art_id:null, name:"sweetwear with hood"
    },
]
我想获取数组文章中满足以下条件的第一个元素的值:

article => article.article_id == design.article_id || article.dsn_shared_art_id == design.article_id
我尝试了。查找,但不起作用:

this.designs.forEach(function(design) {
    var $artdata = this.articles.find(article => article.article_id == design.article_id || article.dsn_shared_art_id == design.article_id);
    console.log($artdata);//undefined
}.bind(this));

我如何才能做到这一点?

它对我来说非常好:

var设计=[
{
设计编号:“bwbmbqlujurv”,文章编号:14782,名称:“阿迪达斯demogorgon black”
}, 
{
设计编号:“LG9YBA2GCWR”,文章编号:14782,名称:“哈利波特魔杖”
}, 
{
设计编号:“ztvx3yikkkyx”,文章编号:5570,名称:“霍格沃茨地图”
}, 
{
设计编号:“hlzd4afi9en5”,文章编号:5570,名称:“兰尼斯特狮子”
}, 
{
设计编号:“sdwererefwff”,文章编号:14782,名称:“布尔巴索口袋妖怪”
},
];
var条款=[
{
物品编号:6508,dsn共享物品编号:空,名称:“发球手两侧”
},
{
文章id:13510,dsn\U共享\U艺术id:null,名称:“男女双方”
},
{
物品编号:5570,dsn共享物品编号:空,名称:“领带”
},
{
物品识别号:14782,dsn共享物品识别号:空,名称:“带兜帽的糖果装”
},
]
设计。forEach(功能(设计){
var$artdata=articles.find(article=>article.article_id==design.article_id | | article.dsn_shared_art_id==design.article_id);
console.log($artdata);//未定义

}.约束(这个)
只需将
this.designs
this.articles
中删除即可。然后删除
.bind(this)
,因为您不需要用
this
绑定它们。 是一个正在工作的jsfiddle。 但如果您在vuejs中执行此操作,则只需更改
forEach
方法,如下所示:

this.designs.forEach((design) => {
  var $artdata = this.articles.find(article => article.article_id == design.article_id || article.dsn_shared_art_id == design.article_id);
  console.log($artdata);//undefined
})

作为
的作用域,此
是代码中的内部
函数。刚刚更换的,将箭头功能。或者您可以尝试设置值
this
外部,如其他答案中所述
让self=this
,您也可以尝试以下方法

var self = this;
self.designs.forEach(function(design) {
    var artdata = self.articles.find(article => article.article_id == design.article_id || article.dsn_shared_art_id == design.article_id);
    console.log(artdata);
});


该问题与
的范围有关。在您的
forEach
中,此.articles
不存在。因此出现了未定义的错误。

.bind(this)
需要什么
.bind(this)