我正在尝试使用 underscore.js 库中的 _.without 和 _.difference 方法,但没有成功。
这是一些代码。
var someIds = _.pluck(parsedID1, 'id');
var otherIds = _.pluck(parsedID2, 'id);
这是麻烦开始的地方,我想从 someId 的列表中删除所有 otherIds。所以根据网站我有两个选择,要么我可以使用_.difference || _。没有。我像这样使用它们...
var newArray = _.without(_.toArray(someIds), _.toArray(otherIds));
我也尝试使用 _.difference 来做到这一点,但除了将第一个参数的副本返回到函数中之外,我似乎无法让这些方法做任何事情。我也尝试在不使用 _.toArray() 的情况下将参数传递给函数,但同样的事情发生了。以前有没有人遇到过这个错误?
编辑:
我已经尝试了下面建议的方式。我将提供更多代码以希望解决此问题。
我作为参数传入的数组采用以下格式。
var array = ['100004191488120', '100004191488321'];
当我进入 _.difference 时,我执行以下操作:
var newArray = _.difference(someIds, otherIds);
如果 someIds 长度是 657 而 otherIds 是 57 我应该得到 600 Id 的结果。相反,无论第一个参数的长度是多少,我都会得到一个结果,即 657。
编辑2:解决
我弄清楚了问题所在,毕竟问题出在我传递的差异的第二个论点上。
我正在执行数据库查询并返回一个如下所示的列表。
[{ _id: 514721152222111116666777, facebook: { id: '123456789' } },
{ _id: 514721152222111116666778, facebook: { id: '12345678' } },]
收到这些结果后,我想获得 facebook id,所以我做了以下操作,
var array = _.pluck(users, 'facebook.id');
这就是问题所在,那个 pluck 给我发回了一个未定义的列表。相反,我必须先进行 2 次弹拨,而不是 1 次,如下所示。
var temp = _.pluck(users, 'facebook');
var arrayId = _.pluck(temp, 'id');
感谢@ZenMaster 放弃了关于 _.without && _.difference 之间差异的知识。你的答案是正确的,在一个活页夹后相当脑死,没有看到明显的东西。