2013-03-18 44 views
1

我想在underscore.js庫中使用_.without和_.difference方法,但沒有運氣。Underscore.js - 沒有和差異方法麻煩

這是一些代碼。

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

這裏是麻煩就來了,我想刪除所有otherIds出來的someId的名單。所以我有兩個選擇根據網站,我可以使用_.difference || _.without。我使用它們像這樣......

var newArray = _.without(_.toArray(someIds), _.toArray(otherIds)); 

我也試圖與_.difference做到這一點爲好,但我不能似乎得到的方法做以外的任何其他返回第一個參數的副本進入功能。我也嘗試過將參數傳遞給函數而不使用_.toArray(),但同樣的事情發生。有沒有人曾經遇到過這個錯誤?

編輯:

我已經嘗試了下面提出的方式。我會再提供一些代碼,希望能夠解決這個問題。

我作爲參數傳入的數組採用以下格式。

var array = ['100004191488120', '100004191488321']; 

當我進入我的_.difference如下:

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

如果someIds長度爲657和otherIds是57我應該得到的600標識的結果。相反,我得到的結果無論第一個參數的長度,爲657

編輯2:解決

我想通了什麼問題,這個問題所有的挫折後的第二個參數撒謊差異我通過。

我正在做一個數據庫查詢,並得到一個如下所示的列表。

[{ _id: 514721152222111116666777, facebook: { id: '123456789' } }, 
{ _id: 514721152222111116666778, facebook: { id: '12345678' } },] 

我收到這些結果後,我想獲得Facebook的ID,所以我做了以下內容,

var array = _.pluck(users, 'facebook.id'); 

那人的問題,這是採摘送我回來的不確定列表。相反,我必須先做2次而不是1次,如下所示。

var temp = _.pluck(users, 'facebook'); 
var arrayId = _.pluck(temp, 'id'); 

感謝@ZenMaster爲下降知識上的差異_.without & & _.difference之間。你的回答是正確的,在一個活頁夾之後非常死腦筋,並沒有看到明顯的。

回答

4
  1. 您不要在without功能
  2. 第二(及以上)的參數給without的第一個參數需要一個_.toArray不是一個數組 - 這是一個價值觀的「清單」。

正確的調用是:

var newArray = _.without(['1', '2', '3'], '1', '3');

這將導致:

['2']

在你的情況,你必須使用_.difference可以看出在JSFiddle這裏。

下面是代碼:

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); 
+0

不行的,我只是再次嘗試這樣做同樣的事情。如果我有2個相同ID和相同長度的數組,所以差異應該是0,而是我將差異作爲第一個參數的大小。 – BJacobs 2013-03-18 04:38:25

+0

我去無方法的唯一原因是希望找到另一種方法來輕鬆找到兩個陣列之間的區別@ZenMaster – BJacobs 2013-03-18 04:52:43

+0

@Popasquat當然,它的工作原理。查看帖子中的JSFiddle鏈接。如果你使用相同的ID運行兩個數組 - 你會得到一個空數組。編輯:啊哈...我看到你找到了問題。大。很高興有幫助。 – ZenMaster 2013-03-19 04:06:16