[英]Extract 1 of each property from object
我正在尋找一種使用lodash / underscore的方法(或者如果不存在,則使用純JS),這種方法只會讓我采用如下所示的給定對象。
animals: {
{
type: 'duck',
name: 'quack',
},
{
type: 'duck',
name: 'quieck',
},
{
type: 'dog',
name: 'bark',
},
},
例如,此對象包含3種不同的動物,但其中兩種是同一類型。
最終結果是能夠使用諸如for循環之類的控制結構來遍歷每種類型的動物,從而使我使用的每種類型只有一個實例的東西。
因為我正在創建列表,所以正在使用它。
此列表將類似於以下內容
duck
name is quack
name is quick
dog
name is bark
但是我想使用控制結構來實現此目的,而不是簡單地在每個名稱中進行輸出和硬編碼,因為此列表將變得非常廣泛和冗長。
我會使用uniq函數。
var uniqueAnimals = _.uniq(animals, function(item, key, type) {
return item.type;
});
假定animals
不是語法錯誤,而是數組:如果您不僅要過濾唯一類型,而且還想為輸出創建結構,則可以使用一個對象:
var kv = {};
animals.forEach(function(a) {
if(kv[a.type]) {
kv[a.type].push(a.name);
} else {
kv[a.type] = [];
}
}
稍后,您可以迭代Object.keys(kv)
以打印鍵/值
var animals = [ { type: 'duck', name: 'quack', }, { type: 'duck', name: 'quieck', }, { type: 'dog', name: 'bark', }, ]; var grouped = _.groupBy(animals, 'type'); document.write('<pre>' + JSON.stringify(grouped, null, 3) + '</pre>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.6.1/lodash.min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.