2015-10-20 105 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