Javascript Underline.js-无差异和无差异方法麻烦

Javascript Underline.js-无差异和无差异方法麻烦,javascript,node.js,underscore.js,Javascript,Node.js,Underscore.js,我试图在underline.js库中使用u0.without和0.difference方法,但运气不好 下面是一些代码 var someIds = _.pluck(parsedID1, 'id'); var otherIds = _.pluck(parsedID2, 'id); 这里是问题开始的地方,我想从someId的列表中删除所有其他ID。因此,根据网站,我有两个选择,要么我可以使用124; | | 124;而不使用。我像这样使用它们 var newArray = _.without(_.

我试图在underline.js库中使用u0.without和0.difference方法,但运气不好

下面是一些代码

var someIds = _.pluck(parsedID1, 'id');
var otherIds = _.pluck(parsedID2, 'id);
这里是问题开始的地方,我想从someId的列表中删除所有其他ID。因此,根据网站,我有两个选择,要么我可以使用124; | | 124;而不使用。我像这样使用它们

var newArray = _.without(_.toArray(someIds), _.toArray(otherIds));
我也尝试过用u.difference来实现这一点,但是除了将第一个参数的副本返回到函数中之外,我似乎无法让方法执行任何操作。我也尝试过在不使用u.toArray的情况下将参数传递到函数中,但同样的情况也发生了。以前有人遇到过这个错误吗

编辑:

我已经尝试了下面建议的方法。我将给出更多的代码,希望能够解决这个问题

作为参数传入的数组的格式如下所示

var array = ['100004191488120', '100004191488321'];
当我进入u.差分时,我做如下操作:

var newArray = _.difference(someIds, otherIds);
如果SomeID的长度是657,而OtherID的长度是57,那么我应该得到600个Id的结果。相反,我得到的结果是,无论第一个参数的长度是多少,都是657

编辑2:已解决

我弄明白了问题是什么,在经历了那么多挫折之后,问题在于我传递的第二个不同论点

我正在做一个db查询,得到一个如下所示的列表

[{ _id: 514721152222111116666777, facebook: { id: '123456789' } },
 { _id: 514721152222111116666778, facebook: { id: '12345678' } },]
var temp = _.pluck(users, 'facebook'); 
var arrayId = _.pluck(temp, 'id');
在我收到这些结果后,我想获得facebook id,所以我做了以下工作:

var array = _.pluck(users, 'facebook.id');
这就是问题所在,这个勇气把我送回了一个未定义的列表。取而代之的是,我必须做两次拔牙,而不是一次,如下所示

[{ _id: 514721152222111116666777, facebook: { id: '123456789' } },
 { _id: 514721152222111116666778, facebook: { id: '12345678' } },]
var temp = _.pluck(users, 'facebook'); 
var arrayId = _.pluck(temp, 'id');
感谢@ZenMaster提供关于无差异和无差异的知识。你的答案是正确的,在一本活页夹之后,你的大脑已经完全瘫痪了,没有看到明显的问题

不需要在Withing函数的第一个参数上设置u.toArray 函数的第二个和更多参数不是数组,而是一个值列表。 适当的呼吁是:

var newArray=389;。不带['1','2','3'],'1','3'

这将导致:

['2']

在您的情况下,您必须使用u.difference,如图所示

代码如下:

var parsedID1 = [{id: '1', name: 'name1'}, {id: '2', name: 'name2'}];
var parsedID2 = [{id: '1', name: 'name1'}, {id: '3', name: 'name3'}];

var someIds = _.pluck(parsedID1, 'id');
var otherIds = _.pluck(parsedID2, 'id');

console.log(someIds, otherIds);

var newArray = _.difference(someIds, otherIds);

console.log(newArray);
不需要在Withing函数的第一个参数上设置u.toArray 函数的第二个和更多参数不是数组,而是一个值列表。 适当的呼吁是:

var newArray=389;。不带['1','2','3'],'1','3'

这将导致:

['2']

在您的情况下,您必须使用u.difference,如图所示

代码如下:

var parsedID1 = [{id: '1', name: 'name1'}, {id: '2', name: 'name2'}];
var parsedID2 = [{id: '1', name: 'name1'}, {id: '3', name: 'name3'}];

var someIds = _.pluck(parsedID1, 'id');
var otherIds = _.pluck(parsedID2, 'id');

console.log(someIds, otherIds);

var newArray = _.difference(someIds, otherIds);

console.log(newArray);

没用,我又试了一次,做了同样的事。如果我有两个相同ID和相同长度的数组,那么差应该是0,相反,我得到的差作为第一个参数的大小。我使用Wide方法的唯一原因是希望找到另一种方法来轻松找到两个数组之间的差@ZenMaster@Popasquat这当然有效。请参阅文章中的JSFIDLE链接。如果使用相同的ID运行两个数组,则会得到一个空数组。编辑:啊哈。。。我看你已经找到了问题所在。伟大的很高兴能帮上忙。没用,我又试了一次,做了同样的事。如果我有两个相同ID和相同长度的数组,那么差应该是0,相反,我得到的差作为第一个参数的大小。我使用Wide方法的唯一原因是希望找到另一种方法来轻松找到两个数组之间的差@ZenMaster@Popasquat这当然有效。请参阅文章中的JSFIDLE链接。如果使用相同的ID运行两个数组,则会得到一个空数组。编辑:啊哈。。。我看你已经找到了问题所在。伟大的很高兴能帮上忙。