Lodash 中文文檔 (v3.10.1) - 「Collection」 方法

Lodash 中文文檔 (v3.10.1) - 「Collection」 方法

Translated by PeckZeg
Original Docs: Lodash v3.10.1 Docsgit

求助

翻譯文檔的難度比想象中的要難,特別是裏面比較學術的詞語,但願您再查閱的時候發現不嚴謹/很差/不恰當的表述或翻譯的時候能斧正。github

「Collection」 方法

_.at(collection, [props])

建立一個包含 collection 中相應給定的鍵、索引的元素數組。鍵必須指定爲單獨的參數或鍵數組。正則表達式

參數算法

  1. collection (Array|Object|string) : 待迭代的集合數組

  2. [props] (…(number|number[]|string|string[]) : 待抽取的屬性名或索引(可單獨指定也可存放在一個數組中)app

返回dom

(Array) : 返回已抽取的元素的新數組ide

示例函數

_.at(['a', 'b', 'c'], [0, 2]);
// → ['a', 'c']

_.at(['barney', 'fred', 'pebbles'], 0, 2);
// → ['barney', 'pebbles']

_.countBy(collection, [iteratee=_.identity], [thisArg])

建立一個由 collection 的每一個元素經由 iteratee 生成的鍵值所組成的對象。每一個鍵對應的值爲 iteratee 返回的生成鍵的次數。iteratee 綁定 thisArg 並在執行時傳入三個參數:value, index|key, collectionthis

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [iteratee=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : iteratee 綁定的 this

返回

(Object) : 返回yi已組成的聚合對象

示例

_.countBy([4.3, 6.1, 6.4], function(n) {
  return Math.floor(n);
});
// → { '4': 1, '6': 2 }

_.countBy([4.3, 6.1, 6.4], function(n) {
  return this.floor(n);
}, Math);
// → { '4': 1, '6': 2 }

_.countBy(['one', 'two', 'three'], 'length');
// → { '3': 2, '5': 1 }

_.every(collection, [predicate=_.identity], [thisArg])

檢查 collection每一個 元素在通過 predicate 檢測以後是否都返回真值。斷言函數綁定 thisArg 並在執行時傳入三個參數:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

別名

  • _.all

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [predicate=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : predicate 綁定的 this 對象

返回

(boolean) : 在全部元素都經過斷言函數檢查時返回 true,不然返回 false

示例

_.every([true, 1, null, 'yes'], Boolean);
// → false

var users = [
  { 'user': 'barney', 'active': false },
  { 'user': 'fred',   'active': false }
];

// 使用 `_.matches` 回調函數簡稱
_.every(users, { 'user': 'barney', 'active': false });
// → false

// 使用 `_.matchesProperty` 回調函數簡稱
_.every(users, 'active', false);
// → true

// 使用 `_.property` 回調函數簡稱
_.every(users, 'active');
// → false

_.filter(collection, [predicate=_.identity], [thisArg])

迭代 collection 的每一個元素,返回一個包含全部元素在傳入 predicate 並返回真值的數組。斷言函數綁定 thisArg 並在執行時傳入三個參數:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

別名

  • _.select

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [predicate=_.identity] (Function|Object|string) : 每次迭代執行時的函數

  3. [thisArg] (*) : predicate 綁定的 this

返回

(Array) : 返回一個已過濾的新數組

示例

_.filter([4, 5, 6], function(n) {
  return n % 2 == 0;
});
// → [4, 6]

var users = [
  { 'user': 'barney', 'age': 36, 'active': true },
  { 'user': 'fred',   'age': 40, 'active': false }
];

// 使用 `_.matches` 回調函數簡稱
_.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
// → ['barney']

// 使用 `_.matchesProperty` 回調函數簡稱
_.pluck(_.filter(users, 'active', false), 'user');
// → ['fred']

// 使用 `_.property` 回調函數簡稱
_.pluck(_.filter(users, 'active'), 'user');
// → ['barney']

_.find(collection, [predicate=_.identity], [thisArg])

迭代 collection 的全部元素,返回第一個經過 predicate 並返回真值的元素。斷言函數綁定 thisArg 並在執行時返回三個元素:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

別名

  • _.detect

參數

  1. collection (Array|Object|string) : 待搜索的集合

  2. [predicate=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : predicate 綁定的 this

返回

(*) : 返回匹配的元素或 undefined

示例

var users = [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': true }
];

_.result(_.find(users, function(chr) {
  return chr.age < 40;
}), 'user');
// → 'barney'

// 使用 `_.matches` 回調函數的簡稱
_.result(_.find(users, { 'age': 1, 'active': true }), 'user');
// → 'pebbles'

// 使用 `_.matchesProperty` 回調函數的簡稱
_.result(_.find(users, 'active', false), 'user');
// → 'fred'

// 使用 `_.property` 回調函數的簡稱
_.result(_.find(users, 'active'), 'user');
// → 'barney'

_.findLast(collection, [predicate=_.identity], [thisArg])

該方法相似 _.find,但其從右到左迭代 collection 的全部元素。

參數

  1. collection (Array|Object|string) : 待搜索的集合

  2. [predicate=_.identity] (Function|Object|string) : ,每次迭代執行的函數

  3. [thisArg] (*) : predicate 綁定的 this

返回

(*) : 返回匹配的元素或 undefined

示例

_.findLast([1, 2, 3, 4], function(n) {
  return n % 2 == 1;
});
// → 3

_.findWhere(collection, source)

collection 的每一個元素與源對象執行深層次的比較,返回第一個符合屬性和屬性值的元素。

注意:該方法支持比較數組、布爾值、Date 對象,數值,Object 對象,正則表達式和字符串。對象將比較其擁有的屬性,而非內置的、不可枚舉的屬性。若是要比較單個或內置屬性值請查看 _.matchesProperty

參數

  1. collection (Array|Object|string) : 待查找的集合

  2. source (Object) : 待匹配的屬性值對象

返回

_(*)_: 返回匹配的元素或 undefined

示例

var users = [
  { 'user': 'barney', 'age': 36, 'active': true },
  { 'user': 'fred',   'age': 40, 'active': false }
];

_.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user');
// → 'barney'

_.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user');
// → 'fred'

_.forEach(collection, [iteratee=_.identity], [thisArg])

Iterates over elements of collection invoking iteratee for each element. The iteratee is bound to thisArg and invoked with three arguments:
(value, index|key, collection). Iteratee functions may exit iteration early by explicitly returning false.

collection 的每一個元素執行 iteratee 迭代器,該迭代器將綁定 thisArg 並在執行中傳入三個參數:value, index|key, collection。迭代器將在明確返回 false 時提早退出迭代。

Note: As with other "Collections" methods, objects with a "length" property are iterated like arrays. To avoid this behavior _.forIn or _.forOwn may be used for object iteration.

注意:如同和其餘 "Collections" 方法,擁有「長度」屬性的可迭代類數組對象,須要避免 _.forIn_.forOwn 使用在此類對象的行爲。

別名

  • _.each

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [iteratee=_.identity] (Function) : 每次迭代執行的函數

  3. [thisArg] (*) : iteratee 綁定的 this

返回

(Array|Object|string) : 返回集合

示例

_([1, 2]).forEach(function(n) {
  console.log(n);
}).value();
// → 記錄從左到右的每一個值,並返回數組

_.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
  console.log(n, key);
});
// → 記錄每一個 值-鍵 對並返回對象(不保證迭代的順序)

_.forEachRight(collection, [iteratee=_.identity], [thisArg])

該方法相似 _.forEach,但其從右往左開始迭代 collection 的每一個元素

別名

  • _.eachRight

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [iteratee=_.identity] (Function) : 每次迭代執行的函數iteration.

  3. [thisArg] (*) : iteratee 綁定的 this

返回

(Array|Object|string) : 返回集合

示例

_([1, 2]).forEachRight(function(n) {
  console.log(n);
}).value();
// → 從右到左記錄每一個值並返回數組

_.groupBy(collection, [iteratee=_.identity], [thisArg])

建立一個由 collection 的每一個元素執行 iteratee 生成的鍵所組成的對象。每一個生成的鍵對應的值是由每次生成該鍵所對應的元素所組成的數組。該迭代器綁定 thisArg 並在執行時傳入三個參數:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [iteratee=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : iteratee 綁定的 this

返回

(Object) : 返回已組成的聚合對象

示例

_.groupBy([4.2, 6.1, 6.4], function(n) {
  return Math.floor(n);
});
// → { '4': [4.2], '6': [6.1, 6.4] }

_.groupBy([4.2, 6.1, 6.4], function(n) {
  return this.floor(n);
}, Math);
// → { '4': [4.2], '6': [6.1, 6.4] }

// 使用 `_.property` 回調函數簡稱
_.groupBy(['one', 'two', 'three'], 'length');
// → { '3': ['one', 'two'], '5': ['three'] }

_.includes(collection, target, [fromIndex=0])

檢查 target 是否在 collection 中(使用 SameValueZero 進行相等性比較)。若是 fromIndex 爲負數,則其爲相對於 collection 末尾的位移。

別名

  • _.contains

  • _.include

參數

  1. collection (Array|Object|string) : 待查找的集合

  2. target (*) : 待查找的值

  3. [fromIndex=0] (number) : 待查找的索引位置

返回

(boolean) : 在一個匹配元素被查找到時返回 true 不然返回 false

示例

_.includes([1, 2, 3], 1);
// → true

_.includes([1, 2, 3], 1, 2);
// → false

_.includes({ 'user': 'fred', 'age': 40 }, 'fred');
// → true

_.includes('pebbles', 'eb');
// → true

_.indexBy(collection, [iteratee=_.identity], [thisArg])

Creates an object composed of keys generated from the results of running each element of collection through iteratee. The corresponding value of each key is the last element responsible for generating the key. The iteratee function is bound to thisArg and invoked with three arguments:
(value, index|key, collection).

建立一個由 collection 的每一個元素執行 iteratee 生成的鍵所組成的對象。每一個生成的鍵對應的值是由最後一個生成該鍵所對應的元素。該迭代器綁定 thisArg 並在執行時傳入三個參數:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [iteratee=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : iteratee 綁定的 this

返回

(Object) : 返回已組成的聚合對象。

示例

var keyData = [
  { 'dir': 'left', 'code': 97 },
  { 'dir': 'right', 'code': 100 }
];

_.indexBy(keyData, 'dir');
// → { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }

_.indexBy(keyData, function(object) {
  return String.fromCharCode(object.code);
});
// → { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }

_.indexBy(keyData, function(object) {
  return this.fromCharCode(object.code);
}, String);
// → { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }

_.invoke(collection, path, [args])

collection 的每一個元素執行位於 path 的方法。返回一個執行方法返回的結果數組。在每一個方法執行的時候將傳入全部額外的參數。若是 methodNamecollection 中每一個元素的可調用函數,則其將綁定 this

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. path (Array|Function|string) : 待執行方法的路徑或每次迭代的可執行函數

  3. [args] (…*) : 方法執行時傳入的參數

返回

(Array) : 返回結果數組

示例

_.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
// → [[1, 5, 7], [1, 2, 3]]

_.invoke([123, 456], String.prototype.split, '');
// → [['1', '2', '3'], ['4', '5', '6']]

_.map(collection, [iteratee=_.identity], [thisArg])

建立一個由 collection 的每一個元素經過 iteratee 返回的值的數組。該迭代器綁定 thisArg 並在執行時傳入三個參數:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

許多 lodash 方法在以迭代器的身份被諸如 _.every, _.filter, _.map, _.mapValues, _.reject_.some 方法執行時會被守護。

守護方法有:

ary, callback, chunk, clone, create, curry, curryRight, drop, dropRight, every, fill, flatten, invert, max, min, parseInt, slice, sortBy, take, takeRight, template, trim, trimLeft, trimRight, trunc, random, range, sample, some, sum, uniqwords

別名

  • _.collect

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [iteratee=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : iteratee 綁定的 this

返回

(Array) : 返回已映射的新數組

示例

function timesThree(n) {
  return n * 3;
}

_.map([1, 2], timesThree);
// → [3, 6]

_.map({ 'a': 1, 'b': 2 }, timesThree);
// → [3, 6] (iteration order is not guaranteed)

var users = [
  { 'user': 'barney' },
  { 'user': 'fred' }
];

// 使用 `_.property` 回調函數簡稱
_.map(users, 'user');
// → ['barney', 'fred']

_.partition(collection, [predicate=_.identity], [thisArg])

建立一個包含分紅兩個分組的數組,第一個分組包含執行 predicate 後返回真值的元素,同時,執行 predicate 後返回假值的元素將被包含於第二個分組之中。斷言函數將綁定 thisArg 並在執行時傳入三個參數:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [predicate=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : predicate 綁定的 this

返回

(Array) : 返回包含已分組元素的數組

示例

_.partition([1, 2, 3], function(n) {
  return n % 2;
});
// → [[1, 3], [2]]

_.partition([1.2, 2.3, 3.4], function(n) {
  return this.floor(n) % 2;
}, Math);
// → [[1.2, 3.4], [2.3]]

var users = [
  { 'user': 'barney',  'age': 36, 'active': false },
  { 'user': 'fred',    'age': 40, 'active': true },
  { 'user': 'pebbles', 'age': 1,  'active': false }
];

var mapper = function(array) {
  return _.pluck(array, 'user');
};

// 使用 `_.matches` 回調函數簡稱
_.map(_.partition(users, { 'age': 1, 'active': false }), mapper);
// → [['pebbles'], ['barney', 'fred']]

// 使用 `_.matchesProperty` 回調函數簡稱
_.map(_.partition(users, 'active', false), mapper);
// → [['barney', 'pebbles'], ['fred']]

// 使用 `_.property` 回調函數簡稱
_.map(_.partition(users, 'active'), mapper);
// → [['fred'], ['barney', 'pebbles']]

_.pluck(collection, path)

Gets the property value of path from all elements in collection.

collection 中獲取全部基於 path 的屬性值。

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. path (Array|string) : 待獲取的屬性路徑

返回

(Array) : 返回屬性值

示例

var users = [
  { 'user': 'barney', 'age': 36 },
  { 'user': 'fred',   'age': 40 }
];

_.pluck(users, 'user');
// → ['barney', 'fred']

var userIndex = _.indexBy(users, 'user');
_.pluck(userIndex, 'age');
// → [36, 40] (iteration order is not guaranteed)

_.reduce(collection, [iteratee=_.identity], [accumulator], [thisArg])

Reduces collection to a value which is the accumulated result of running each element in collection through iteratee, where each successive invocation is supplied the return value of the previous. If accumulator is not provided the first element of collection is used as the initial value. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, value, index|key, collection).

縮小 collection 直至成爲一個值,在 collection 中對每一個元素執行iteratee 而獲取的累加值結果(在每次連續調用以前須要提供返回值,若是 collection 的第一個元素沒有提供 accumulator,則其能夠用來做爲初始值)。iteratee 綁定 thisArg 並在執行時傳入四個參數:accumulator, value, index|key, collection

許多 lodash 方法在以迭代器的身份被諸如 _.reduce, _.reduceRight_.transform 方法執行時會被守護。

守護方法有:

assign, defaults, defaultsDeep, includes, merge, sortByAll, 和 sortByOrder

別名

  • _.foldl

  • _.inject

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [iteratee=_.identity] (Function) : 每次執行時執行的函數

  3. [accumulator] (*) : 初始值

  4. [thisArg] (*) : iteratee 綁定的 this

返回

(*) : 返回累加值

示例

_.reduce([1, 2], function(total, n) {
  return total + n;
});
// → 3

_.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
  result[key] = n * 3;
  return result;
}, {});
// → { 'a': 3, 'b': 6 } (不保證執行的順序)

_.reduceRight(collection, [iteratee=_.identity], [accumulator], [thisArg])

該方法相似 _.reduce,但其將從右往左依次迭代 collection 的元素。

別名

  • _.foldr

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [iteratee=_.identity] (Function) : 每次迭代執行的函數

  3. [accumulator] (*) : 初始值

  4. [thisArg] (*) : iteratee 綁定的 this

返回

(*) : 返回累加值

示例

var array = [[0, 1], [2, 3], [4, 5]];

_.reduceRight(array, function(flattened, other) {
  return flattened.concat(other);
}, []);
// → [4, 5, 2, 3, 0, 1]

_.reject(collection, [predicate=_.identity], [thisArg])

The opposite of _.filter; this method returns the elements of collection that predicate does not return truthy for.

_.filter 做用相反,該方法返回 collection 的執行 predicate沒有 返回真值的元素。

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [predicate=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : predicate 綁定的 this

返回

(Array) : 返回已過慮的新數組

示例

_.reject([1, 2, 3, 4], function(n) {
  return n % 2 == 0;
});
// → [1, 3]

var users = [
  { 'user': 'barney', 'age': 36, 'active': false },
  { 'user': 'fred',   'age': 40, 'active': true }
];

// 使用 `_.matches` 回調函數簡稱
_.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
// → ['barney']

// 使用 `_.matchesProperty` 回調函數簡稱
_.pluck(_.reject(users, 'active', false), 'user');
// → ['fred']

// 使用 `_.property` 回調函數簡稱
_.pluck(_.reject(users, 'active'), 'user');
// → ['barney']

_.sample(collection, [n])

從集合中隨機獲取一個或 n 個元素。

參數

  1. collection (Array|Object|string) : 待取樣的集合

  2. [n] (number) : 取出樣本元素的數量

返回

(*) : 返回隨機的樣本(們)。

示例

_.sample([1, 2, 3, 4]);
// → 2

_.sample([1, 2, 3, 4], 2);
// → [3, 1]

_.shuffle(collection)

Creates an array of shuffled values, using a version of the Fisher-Yates shuffle.

建立一個經 Fisher-Yates 洗牌算法 計算後的數組。

參數

  1. collection (Array|Object|string) : 待洗牌的集合

返回

(Array) : 返回洗牌後的新數組

示例

_.shuffle([1, 2, 3, 4]);
// → [4, 1, 3, 2]

_.size(collection)

返回 collection 的長度,返回類數組對象的 length 值,或對象的自有可枚舉屬性的個數。

參數

  1. collection (Array|Object|string) : 待檢查的集合

返回

(number) : 返回 collection 的長度

示例

_.size([1, 2, 3]);
// → 3

_.size({ 'a': 1, 'b': 2 });
// → 2

_.size('pebbles');
// → 7

_.some(collection, [predicate=_.identity], [thisArg])

只要 collection一個 元素經過 predicate 檢查就返回真值。該函數在找到經過的值後當即返回,全部並不會迭代整個集合。該斷言函數綁定 thisArg 並在執行時傳入三個參數:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

別名

  • _.any

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. [predicate=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : predicate 綁定的 this

返回

(boolean) : Returns true if any element passes the predicate check, else false.

示例

_.some([null, 0, 'yes', false], Boolean);
// → true

var users = [
  { 'user': 'barney', 'active': true },
  { 'user': 'fred',   'active': false }
];

// 使用 `_.matches` 回調函數簡稱
_.some(users, { 'user': 'barney', 'active': false });
// → false

// 使用 `_.matchesProperty` 回調函數簡稱
_.some(users, 'active', false);
// → true

// 使用 `_.property` 回調函數簡稱
_.some(users, 'active');
// → true

_.sortBy(collection, [iteratee=_.identity], [thisArg])

建立一個數組。對集合的每一個元素執行 iteratee 後的結果進行升序整理。該方法執行的是穩定排序,即其保留了原來的排序順序。iteratee 綁定 thisArg 並在執行時傳入三個參數:value, index|key, collection

若是提供的是屬性名,那麼 predicate 將建立 _.property 風格的回調函數,並返回給定元素的屬性的值。

若是值還提供了 thisArg,那麼 predicate 將建立 _.matchesProperty 風格的回調,並在元素含有匹配的屬性值的時候返回 true,不然返回 false

若是提供的是對象,那麼 predicate 將建立 _.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

參數

  1. collection (Array|Object|string) : 待迭代的結合

  2. [iteratee=_.identity] (Function|Object|string) : 每次迭代執行的函數

  3. [thisArg] (*) : iteratee 綁定的 this

返回

(Array) : 返回已排序的新數組

示例

_.sortBy([1, 2, 3], function(n) {
  return Math.sin(n);
});
// → [3, 1, 2]

_.sortBy([1, 2, 3], function(n) {
  return this.sin(n);
}, Math);
// → [3, 1, 2]

var users = [
  { 'user': 'fred' },
  { 'user': 'pebbles' },
  { 'user': 'barney' }
];

// 使用 `_.property` 回調函數的簡稱
_.pluck(_.sortBy(users, 'user'), 'user');
// → ['barney', 'fred', 'pebbles']

_.sortByAll(collection, iteratees)

該方法相似 _.sortBy,但其能使用多個迭代器或屬性名。

若是屬性名被提供給迭代器,則其將建立 _.property 風格的回調函數,並返回給定元素的屬性值。

若是對象被提供給迭代器,則其將建立_.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. iteratees (…(Function|Function[]|Object|Object[]|string|string[]) : 排序迭代器,可指定爲多個單獨的迭代器或一個迭代器數組

返回

(Array) : 返回已排序的新數組

示例

var users = [
  { 'user': 'fred',   'age': 48 },
  { 'user': 'barney', 'age': 36 },
  { 'user': 'fred',   'age': 42 },
  { 'user': 'barney', 'age': 34 }
];

_.map(_.sortByAll(users, ['user', 'age']), _.values);
// → [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]

_.map(_.sortByAll(users, 'user', function(chr) {
  return Math.floor(chr.age / 10);
}), _.values);
// → [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]

_.sortByOrder(collection, iteratees, [orders])

該方法相似 _.sortByAll,但其容許指定迭代器排序的方式。若是未指定 orders,則全部值使用升序排列。此外,asc 表示升序,desc 則表示降序。

若是屬性名被提供給迭代器,則其將建立 _.property 風格的回調函數,並返回給定元素的屬性值。

若是對象被提供給迭代器,則其將建立_.matches 風格的回調函數,並在匹配給定對象的屬性的元素時返回 true,不然返回 false

參數

  1. collection (Array|Object|string) : 待迭代的集合

  2. iteratees (Function[]|Object[]|string[]) : 排序的迭代器(們)

  3. [orders] (string[]) : 迭代器的排序方向

返回

(Array) : 返回已排序的新數組

示例

var users = [
  { 'user': 'fred',   'age': 48 },
  { 'user': 'barney', 'age': 34 },
  { 'user': 'fred',   'age': 42 },
  { 'user': 'barney', 'age': 36 }
];

// sort by `user` in ascending order and by `age` in descending order
_.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values);
// → [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]

_.where(collection, source)

collectionsource 的每一個元素間進行深度比較。返回一個包含兩邊都具備相同屬性值的元素的數組。

注意:該方法支持比較數組、布爾值、Date 對象、數值、Object 對象,正則表達式和字符串。對象將比較其自有而非內置、可枚舉的屬性。若是須要比較單個自有或內置屬性值請參見 _.matchesProperty.

參數

  1. collection (Array|Object|string) : 待查找的集合

  2. source (Object) : 帶匹配的屬性值對象。

返回

(Array) : 返回已過慮的新數組

示例

var users = [
  { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] },
  { 'user': 'fred',   'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] }
];

_.pluck(_.where(users, { 'age': 36, 'active': false }), 'user');
// → ['barney']

_.pluck(_.where(users, { 'pets': ['dino'] }), 'user');
// → ['fred']
相關文章
相關標籤/搜索