Javascript 如何使用array.find将其与其他对象进行比较
我有两个javascript数组对象设计和文章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
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)
?