لم أر هذا في الشرطة السفلية بالفعل لذا أردت التخلص منها هناك.
لقد وجدت هذا مفيدًا عندما أقوم بأشياء مثل إنشاء قائمة بالكتب الموصى بها بناءً على الكتب التي شاهدها المستخدم أو أحبها أو أحبها أصدقاؤه. ثم اعرض عليهم قائمة فريدة من التوصيات المحتملة.
function distinct(items, prop) {
var unique = [];
var distinctItems = [];
_.each(items, function(item) {
if (unique[item[prop]] === undefined) {
distinctItems.push(item);
}
unique[item[prop]] = 0;
});
return distinctItems;
}
// likedBooks + viewedBooks + friendLikedBooks + friendViewedBooks
var books = [
{ name: 'Holes', id: 1 },
{ name: 'Treasure Island', id: 2 },
{ name: 'Holes', id: 2 }
];
var uniqueBooks = distinct(books, 'id');
console.log(uniqueBooks);
/**
var uniqueBooks = [
{ name: 'Holes', id: 1 },
{ name: 'Treasure Island', id: 2 }
];
*/
أحب أن أتوصل إلى علاقات عامة أكثر ملاءمة ولكني أردت أن أرى ما يعتقده الناس أولاً.
يمكنك تحقيق ذلك من خلال ما يلي ، على الرغم من أنه لا يمكنك استخدام اختصار اسم الخاصية.
_.uniq(books, function(book) { return book.id; })
Tybraddunbar لم أعتقد أنه يمكنني فعل ذلك من المستندات. سيكون مفيدًا حقًا كمثال ثانٍ هناك.
http://underscorejs.org/#uniq
يجب أن تكون طريقة _.property
قادرة على حل حالة الاستخدام هذه بشكل جيد.
التعليق الأكثر فائدة
يمكنك تحقيق ذلك من خلال ما يلي ، على الرغم من أنه لا يمكنك استخدام اختصار اسم الخاصية.