Underscore: (Idee) Eindeutiges Array von Objekten nach Eigenschaft

Erstellt am 10. Dez. 2013  ·  3Kommentare  ·  Quelle: jashkenas/underscore

Ich habe das noch nicht unterstrichen gesehen, also wollte ich das hier rauswerfen.

Ich fand dies nützlich, wenn ich zum Beispiel eine Liste mit empfohlenen Büchern erstellen möchte, die auf den Büchern basieren, die ein Benutzer angesehen, mit „Gefällt mir“ markiert oder seinen Freunden gefallen hat. Zeigen Sie ihnen dann eine einzigartige Liste wahrscheinlicher Empfehlungen.

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

Ich würde mir gerne eine passendere PR einfallen lassen, aber ich wollte zuerst sehen, was die Leute dachten.

question

Hilfreichster Kommentar

Sie können dies mit den folgenden Schritten erreichen, obwohl Sie die Kurzform des Eigenschaftsnamens nicht verwenden können.

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

Alle 3 Kommentare

Sie können dies mit den folgenden Schritten erreichen, obwohl Sie die Kurzform des Eigenschaftsnamens nicht verwenden können.

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

Ty @braddunbar Ich hätte nicht gedacht, dass ich das aus den Dokumenten machen könnte. Wäre da als zweites Beispiel echt hilfreich.
http://underscorejs.org/#uniq

Die neue Methode _.property sollte diesen Anwendungsfall recht gut lösen können.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

xiaoliwang picture xiaoliwang  ·  3Kommentare

afranioce picture afranioce  ·  8Kommentare

acl0056 picture acl0056  ·  5Kommentare

chikamichi picture chikamichi  ·  8Kommentare

jezen picture jezen  ·  8Kommentare