[英]Underscore.js get an array of unique objects
我有2個對象數組。 陣列之間有重復項。 我想將它們合並到所有唯一對象的1個數組中(因此不能重復)。
如何通過比較每個對象的“ id”來做到這一點?
_.uniq()
有一個名為_.uniq()
的方法。 它看起來是正確的,但是我無法正確獲取“迭代器”參數的語法。
var firstArray = [{ id: 1, name: "foo"}, { id: 2, name: "bar" }];
var secondArray = [{ id: 2, name: "boop" }, { id: 3, name: "baz" }];
firstArray.push(secondArray);
var myUniqueArray = _.uniq(firstArray, false, ???);
myUniqueArray // [{ id: 1, name: "foo"}, { id: 2, name: "bar" }, { id: 3, name: "baz" }];
您應該能夠通過_.uniq
方法(與用於過濾項目的屬性名稱的第二個參數一起使用)實現此_.uniq
:
var firstArray = [{ id: 1, name: "foo"}, { id: 2, name: "bar" }]; var secondArray = [{ id: 2, name: "boop" }, { id: 3, name: "baz" }]; var result = _.uniq(firstArray.concat(secondArray), 'id'); alert(JSON.stringify(result, null, 4));
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
應該執行以下操作:
var myUniqueArray = _.uniq(firstArray.concat(secondArray), false, function (obj) {
return obj.id;
});
這里的iteratee將產生一個檢查其唯一性的值,在這種情況下為id
屬性值。
這是一個JSFiddle 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.