Underscore: (فكرة) مجموعة فريدة من الكائنات حسب الخاصية

تم إنشاؤها على ١٠ ديسمبر ٢٠١٣  ·  3تعليقات  ·  مصدر: jashkenas/underscore

لم أر هذا في الشرطة السفلية بالفعل لذا أردت التخلص منها هناك.

لقد وجدت هذا مفيدًا عندما أقوم بأشياء مثل إنشاء قائمة بالكتب الموصى بها بناءً على الكتب التي شاهدها المستخدم أو أحبها أو أحبها أصدقاؤه. ثم اعرض عليهم قائمة فريدة من التوصيات المحتملة.

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 }
];
*/

أحب أن أتوصل إلى علاقات عامة أكثر ملاءمة ولكني أردت أن أرى ما يعتقده الناس أولاً.

question

التعليق الأكثر فائدة

يمكنك تحقيق ذلك من خلال ما يلي ، على الرغم من أنه لا يمكنك استخدام اختصار اسم الخاصية.

_.uniq(books, function(book) { return book.id; })

ال 3 كومينتر

يمكنك تحقيق ذلك من خلال ما يلي ، على الرغم من أنه لا يمكنك استخدام اختصار اسم الخاصية.

_.uniq(books, function(book) { return book.id; })

Tybraddunbar لم أعتقد أنه يمكنني فعل ذلك من المستندات. سيكون مفيدًا حقًا كمثال ثانٍ هناك.
http://underscorejs.org/#uniq

يجب أن تكون طريقة _.property قادرة على حل حالة الاستخدام هذه بشكل جيد.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات