Collection方法#
在介紹集合方法之前首先介紹一下collection的概念檀葛,可能有后端開發(fā)經(jīng)驗的小伙伴們對集合的概念并不陌生隙咸,比如java中的集合類(list夯秃,set,map)峰弹,但是在js當中并沒有那么多原生的數(shù)據(jù)結構回怜,只能用數(shù)組的方法來模擬類似的數(shù)據(jù)結構大年。比如使用push,pop方法來模擬壓棧和出棧,使用push鲜戒,shift來模擬進出隊列的數(shù)據(jù)結構专控。而在這里collection的集合指的是多個數(shù)組或?qū)ο蠼M成的數(shù)據(jù)結構,類似JSON遏餐。因此數(shù)組和對象也可以使用集合的某些方法伦腐。下面就開始逐一介紹。
1..countBy(collection, [iteratee=.identity])
遍歷傳入的集合失都,用傳入的處理函數(shù)進行處理柏蘑,返回一個結果值和個數(shù)的鍵值對組成的對象。
collection (Array|Object): 待遍歷的集合(可以是數(shù)組或?qū)ο螅?
[iteratee=_.identity] :(Function):處理函數(shù).
例:
_.countBy([6.1, 4.2, 6.3], Math.floor);
// => { '4': 1, '6': 2 }(通過后面函數(shù)處理粹庞,結果為'4'的有一個,結果為'6'的有兩個)
// The `_.property` iteratee shorthand.
_.countBy(['one', 'two', 'three'], 'length');
// => { '3': 2, '5': 1 }
2..every(collection, [predicate=.identity])
遍歷傳入的集合咳焚,如果所有值都符合傳入的條件,則返回true庞溜,否則返回false革半。一旦遇到不符合規(guī)則的入?yún)ⅲ瑒t直接返回false并停止執(zhí)行流码。
collection (Array|Object): 待遍歷的集合(可以是數(shù)組或?qū)ο螅?
[predicate=_.identity] (Function): 對每個值進行調(diào)用的函數(shù).
例:
_.every([true, 1, null, 'yes'], Boolean);
// => false
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.every(users, { 'user': 'barney', 'active': false });
// => false
_.every(users, ['active', false]);
// => true
_.every(users, 'active');
// => false
-
.filter(collection, [predicate=.identity])
通過處理函數(shù)遍歷整個集合又官,用處理函數(shù)對集合進行刪選,返回一個新的數(shù)組漫试,請注意這個方法的返回值是一個數(shù)組六敬。
collection (Array|Object): 待遍歷的集合(可以是數(shù)組或?qū)ο螅?
[predicate=_.identity] (Function): 對每個值進行調(diào)用的函數(shù).
例:
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.filter(users, function(o) { return !o.active; });
// => [{ 'user': 'fred', 'age': 40, 'active': false }]
_.filter(users, { 'age': 36, 'active': true });
// => [ { 'user': 'barney', 'age': 36, 'active': true }]
_.filter(users, ['active', false]);
// => [{ 'user': 'fred', 'age': 40, 'active': false }]
_.filter(users, 'active');
// => [ { 'user': 'barney', 'age': 36, 'active': true }]
4..find(collection, [predicate=.identity], [fromIndex=0])
通過處理函數(shù)對集合中的每個值進行處理,返回第一個符合的元素驾荣。
collection (Array|Object): 待遍歷的集合(可以是數(shù)組或?qū)ο螅?
[predicate=_.identity] (Function): 對每個值進行調(diào)用的函數(shù).
[fromIndex=0] (number): 篩選的七點索引.
例:
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.find(users, function(o) { return o.age < 40; });
// => [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.find(users, { 'age': 1, 'active': true });
// => { 'user': 'pebbles', 'age': 1, 'active': true }
_.find(users, ['active', false]);
// => { 'user': 'fred', 'age': 40, 'active': false },
_.find(users, 'active');
// =>{ 'user': 'barney', 'age': 36, 'active': true },
5..findLast(collection, [predicate=.identity], [fromIndex=collection.length-1])
這個方法和_.find相似外构,區(qū)別是從右向左進行查找。