Underscore: (ide) Array objek yang unik berdasarkan properti

Dibuat pada 10 Des 2013  ·  3Komentar  ·  Sumber: jashkenas/underscore

Saya belum melihat ini di garis bawah jadi saya ingin membuang ini di luar sana.

Saya menemukan ini berguna ketika saya melakukan hal-hal seperti membuat daftar buku yang direkomendasikan berdasarkan buku-buku yang telah dilihat, disukai, atau disukai teman-teman pengguna. Kemudian tunjukkan kepada mereka daftar unik dari kemungkinan rekomendasi.

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

Saya ingin membuat PR yang lebih tepat, tetapi saya ingin melihat apa yang dipikirkan orang terlebih dahulu.

question

Komentar yang paling membantu

Anda dapat melakukannya dengan yang berikut ini, meskipun Anda tidak dapat menggunakan singkatan nama properti.

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

Semua 3 komentar

Anda dapat melakukannya dengan yang berikut ini, meskipun Anda tidak dapat menggunakan singkatan nama properti.

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

Ty @braddunbar Tidak berpikir saya bisa melakukan itu dari dokumen. Akan sangat membantu sebagai contoh kedua di sana.
http://underscorejs.org/#uniq

Metode _.property yang baru seharusnya dapat menyelesaikan kasus penggunaan ini dengan cukup baik.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat