2013-07-02 67 views
4

我想使用Underscore.js來確定一個對象的實例是否存在於一個數組中。下劃線包含基於對象屬性

一個例子用法是:

var enrollments = [ 
    { userid: 123, courseid: 456, enrollmentid: 1 }, 
    { userid: 123, courseid: 456, enrollmentid: 2 }, 
    { userid: 921, courseid: 621, enrollmentid: 3 } 
] 

我希望能夠找出獨特的註冊,其中用戶ID和courseid是相同的。

所以基本上,給定一個註冊列表,我可以刪除基於與userid和courseid匹配的重複項,但不是註冊ID。

+1

你只想刪除重複?或者真的進去找到他們? – jcreamer898

+1

['_.uniq'](http://underscorejs.org/#uniq)? – Bergi

+0

@Bergi _.uniq在這個特定的情況下工作很好。但我仍在尋找是否有辦法確定它是否存在於其中。 – claydiffrient

回答

4

您可以使用從Underscorefilter方法:

function contains(arr, userid, courseid){ 

var matches = _.filter(arr, function(value){ 
    if (value.userid == userid && value.courseid == courseid){ 
     return value; 
    } 
}); 

return matches; 
} 

contains(enrollments, 123, 456); 
+0

使用'_.where'似乎更容易 – Bergi

+1

close ... _.findWhere(enrollments,{userid:123,enrollmentid:1}) –

+0

@Bergi你說的對,但是'where'在內部使用'filter' –