【发布时间】:2018-11-11 17:04:26
【问题描述】:
我有 2 个数组:
var yin = [{"_id": "11111", "name": "blue"}];
var yang = [{"_id": "11111", "name": "blue"}, {"_id": "22222", "name": "red"}];
我尝试像这样过滤掉以下内容:
var yang = yang.filter(function(e){ return this.indexOf(e) < 0; }, yin);
由于某种原因,indexOf(e) 正在返回 -1,我知道这是完全相同的数据。我能想到的唯一一件事是有一些关系(可能不是正确的术语)数据位于下面,这使得它们看起来不一样,因为对象来自完全不同的数据库来源。
是否有另一种方法可以从来自不同来源的对象数组中过滤出相同的数据?
我知道这个过滤功能有效,因为如果我使用.push() 推送数据,它会很好地过滤掉。
【问题讨论】:
-
this不是你想象的那样。在您的代码中,this指的是全局对象。 -
我认为
this可能正在做你想做的事。 -
你到底想做什么
-
我不理解这条评论@samanime
-
OP 将
yin作为第二个参数传递给filter,它指的是函数调用中的this。所以它是正确使用的。