2015-10-20 146 views
0

我目前使用下劃線到一個對象的長度使用_.size(obj),這很好,但我想知道我如何能夠深入一點,並得到在我的例子中ID爲123的對象的長度。我不確定這是否可以通過使用下劃線來實現,還是我需要使用for..in循環並進行某種計數?通過嵌套的對象ID獲取對象的長度?

JS console.clear();

var obj = { 
    'ABC': { 
     id: '123', 
     name: 'Sesame Street' 
    }, 
    'DEF': { 
     id: '123', 
     name: 'Sesame Street' 
    }, 
    'GHI': { 
     id: '456', 
     name: 'Nowhere Street' 
    } 
}; 

console.log('Get length of obj', _.size(obj)); 
console.log('Get length of obj with id == 123??'); 

的jsfiddle:http://jsfiddle.net/kyllle/0yam33ow/

回答

1

你可以在你的對象轉換成一個數組,並使用.filter只用ID 123獲得物品:

var arr = _.values(obj); 
var newObj = arr.filter(function(item){ 
    return item.id === '123'; 
}); 

console.log(_.size(newObj)); // 2 

你可以做同樣的事情通過使用下劃線_.where

var newObj = _.where(obj, {id: '123'}); 

Fiddle Example