콜렉션은 배열과 객체 (그리고 이터러블 객체) 모두에서 작동한다.
<aside> 💡 .countBy(collection, [iteratee=.identity])
</aside>
iteratee를 이용해서 생성한 값의 횟수를 세어 객체로 리턴한다. key 값은 iteratee에서 만든 값이고 value는 횟수 이다. 객체 인 경우 value 값 만을 이용해서 숫자를 센다
_.countBy([6.1, 4.2, 6.3], Math.floor);
// => { '4': 1, '6': 2 }
// The `_.property` iteratee shorthand.
_.countBy(['one', 'two', 'three'], 'length');
// => { '3': 2, '5': 1 }
_.countBy({ a: 1, b: 2, c: 3, d: 1 }, a => a * 10);
// => { '10': 2, '20': 1, '30': 1 }
<aside> 💡 .every(collection, [predicate=.identity])
</aside>
predicate가 모든 엘리먼트에 대하여 true를 반환하는지 체크한다. 만약 맞다면 true 아니면 false 이다.
predicate함수는 세개의 인자를 받는다. (value, index | key, collection)
빈 컬렉션은 true 이다.
_.every([true, 1, null, 'yes'], Boolean);
// => false
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': false }
];
// The `_.matches` iteratee shorthand.
_.every(users, { 'user': 'barney', 'active': false });
// => false
// The `_.matchesProperty` iteratee shorthand.
_.every(users, ['active', false]);
// => true
// The `_.property` iteratee shorthand.
_.every(users, 'active');
// => false