Lodash 中文文档 (v3.10.1) - “Chain” 要领

Lodash 中文文档 (v3.10.1) – “Chain” 要领

Translated by PeckZeg
Original Docs: Lodash v3.10.1 Docs

“Chain” 要领

_(value)

建立一个包括 valuelodash 对象以开启内置的要领链。要领链对返回数组、鸠合或函数的要领发生作用,而且要领可以被链式挪用。那些猎取单值或可以返回一个原始值的要领将自动完毕要领链而且返回一个未包裹成 lodash 对象的值。假如明白须要链式挪用可以运用 _.chain。链式挪用的加载将是耽误加载,这表明挪用将耽误到间接或直接挪用 _#value 要领。

耽误盘算支撑一些要领疾速兼并。疾速兼并是一个最优兼并迭代器挪用的战略。如许做可以协助防止一些盘算中心天生的数据结构,而且可以大大下降迭代器的实行次数。

链式挪用支撑自定义天生效果。只需在天生的时刻直接或间接的包括 _#value 要领。

另外,关于 lodash 的要领,包装集具有 ArrayString 的要领。

Array 包装集的要领有:

concat, join, pop, push, reverse, shift, slice, sort, spliceunshift

String 包装集的要领有:

replacesplit

支撑疾速兼并的包装集要领有:

compact, drop, dropRight, dropRightWhile, dropWhile, filter, first, initial, last, map, pluck, reject, rest, reverse, slice, take, takeRight, takeRightWhile, takeWhile, toArraywhere

可链式挪用的包装集要领有:

after, ary, assign, at, before, bind, bindAll, bindKey, callback, chain, chunk, commit, compact, concat, constant, countBy, create, curry, debounce, defaults, defaultsDeep, defer, delay, difference, drop, dropRight, dropRightWhile, dropWhile, fill, filter, flatten, flattenDeep, flow, flowRight, forEach, forEachRight, forIn, forInRight, forOwn, forOwnRight, functions, groupBy, indexBy, initial, intersection, invert, invoke, keys, keysIn, map, mapKeys, mapValues, matches, matchesProperty, memoize, merge, method, methodOf, mixin, modArgs, negate, omit, once, pairs, partial, partialRight, partition, pick, plant, pluck, property, propertyOf, pull, pullAt, push, range, rearg, reject, remove, rest, restParam, reverse, set, shuffle, slice, sort, sortBy, sortByAll, sortByOrder, splice, spread, take, takeRight, takeRightWhile, takeWhile, tap, throttle, thru, times, toArray, toPlainObject, transform, union, uniq, unshift, unzip, unzipWith, values, valuesIn, where, without, wrap, xor, zip, zipObject, zipWith

默许不能被链式挪用的包装集要领有:

add, attempt, camelCase, capitalize, ceil, clone, cloneDeep, deburr, endsWith, escape, escapeRegExp, every, find, findIndex, findKey, findLast, findLastIndex, findLastKey, findWhere, first, floor, get, gt, gte, has, identity, includes, indexOf, inRange, isArguments, isArray, isBoolean, isDate, isElement, isEmpty, isEqual, isError, isFinite isFunction, isMatch, isNative, isNaN, isNull, isNumber, isObject, isPlainObject, isRegExp, isString, isUndefined, isTypedArray, join, kebabCase, last, lastIndexOf, lt, lte, max, min, noConflict, noop, now, pad, padLeft, padRight, parseInt, pop, random, reduce, reduceRight, repeat, result, round, runInContext, shift, size, snakeCase, some, sortedIndex, sortedLastIndex, startCase, startsWith, sum, template, trim, trimLeft, trimRight, trunc, unescape, uniqueId, valuewords

包装集函数 sample 在参数供应 n 的情况下将返回包装集,其他情况下将返回未经包装过的值。

参数

  1. value (*) : 待包装至 lodash 实例的值

返回

(Object) : 返回一个新的 lodash 包装集实例

示例

var wrapped = _([1, 2, 3]);

// 返回一个未包装的值
wrapped.reduce(function(total, n) {
  return total + n;
});
// → 6

// 返回一个包装值
var squares = wrapped.map(function(n) {
  return n * n;
});

_.isArray(squares);
// → false

_.isArray(squares.value());
// → true

_.chain(value)

建立一个明白可以被链式挪用的 lodash 对象

参数

  1. value (*) : 待包装的值

返回

(Object) : 返回一个新的 lodash 包装实例

示例

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

var youngest = _.chain(users)
  .sortBy('age')
  .map(function(chr) {
    return chr.user + ' is ' + chr.age;
  })
  .first()
  .value();
// → 'pebbles is 1'

_.tap(value, interceptor, [thisArg])

该要领实行 interceptor 并返回 value。该拦截器将绑定 thisArg 并在实行时传入一个参数:value。该要领的目标是“应用”要领链去操纵链中的中心效果。

参数

  1. value (*) : 供应给拦截器的值

  2. interceptor (Function) : 待实行的函数

  3. [thisArg] (*) : interceptor 绑定的 this

返回

(*) : 返回值

示例

_([1, 2, 3])
 .tap(function(array) {
   array.pop();
 })
 .reverse()
 .value();
// → [2, 1]

_.thru(value, interceptor, [thisArg])

This method is like _.tap except that it returns the result of interceptor.

该要领相似 _.tap,但其返回拦截器的值。

参数

  1. value (*) : 供应给拦截器的值

  2. interceptor (Function) : 待实行的函数

  3. [thisArg] (*) : interceptor 绑定的 this

返回

(*) : 返回 interceptor 的效果

示例

_('  abc  ')
 .chain()
 .trim()
 .thru(function(value) {
   return [value];
 })
 .value();
// → ['abc']

_.prototype.chain()

在包装对象上显式开启链式挪用

返回

(Object) : 返回一个新的 lodash 包装实例

示例

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

// 不运用显式挪用链
_(users).first();
// → { 'user': 'barney', 'age': 36 }

// 运用显式挪用链
_(users).chain()
  .first()
  .pick('user')
  .value();
// → { 'user': 'barney' }

_.prototype.commit()

实行挪用链行列并返回包装集效果

返回

(Object) : 返回新的 lodash 包装集实例

示例

var array = [1, 2];
var wrapped = _(array).push(3);

console.log(array);
// → [1, 2]

wrapped = wrapped.commit();
console.log(array);
// → [1, 2, 3]

wrapped.last();
// → 3

console.log(array);
// → [1, 2, 3]

_.prototype.concat([values])

Creates a new array joining a wrapped array with any additional arrays and/or values.

建立一个含有衔接其他数组和(或)值的新数组包装集。

参数

  1. [values] (…*) : 带衔接的值

返回

(Array) : 返回一个已衔接的新数组

示例

var array = [1];
var wrapped = _(array).concat(2, [3], [[4]]);

console.log(wrapped.value());
// → [1, 2, 3, [4]]

console.log(array);
// → [1]

_.prototype.plant()

建立一个链式挪用行列的克隆(会将 value 替换为克隆后的链式挪用链中)。

返回

(Object) : 返回一个新的 lodash 包装实例

示例

var array = [1, 2];
var wrapped = _(array).map(function(value) {
  return Math.pow(value, 2);
});

var other = [3, 4];
var otherWrapped = wrapped.plant(other);

otherWrapped.value();
// → [9, 16]

wrapped.value();
// → [1, 4]

_.prototype.reverse()

翻转包装数组,将第一个元素和末了一个元素对调,第二个元素和倒数第二个元素对调,以此类推。

注重:该要领会修正包装数组。

返回

(Object) : 返回一个已翻转过的数组的 lodash 包装实例

示例

var array = [1, 2, 3];

_(array).reverse().value()
// → [3, 2, 1]

console.log(array);
// → [3, 2, 1]

_.prototype.toString()

Produces the result of coercing the unwrapped value to a string.

发生强迫将值转为未包装的字符串果。

返回

(string) : 返回强迫转为字符串的值

示例

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

_.prototype.value()

实行要领链行列并提取未包装的值

别号

  • _.prototype.run

  • _.prototype.toJSON

  • _.prototype.valueOf

返回

(*) : 返回已处置惩罚的未包装的值

示例

_([1, 2, 3]).value();
// → [1, 2, 3]
    原文作者:PeckZeg
    原文地址: https://segmentfault.com/a/1190000004241385
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞