_.countBy
创建一个由运行 collection
到 iteratee
的每个元素的结果生成的键组成的对象。 每个键对应的值是该键被 iteratee
返回的次数。 使用一个参数调用迭代对象:(value)。
引入版本 0.5.0
参数:(collection, [iteratee=_.identity])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 转换键的迭代器。
返回 (Object): 返回组合的聚合对象。
示例
_.countBy([6.1, 4.2, 6.3], Math.floor)
_.countBy(['one', 'two', 'three'], 'length')
_.every
检查 predicate
是否为 collection
的 all 元素返回真值。 一旦 predicate
返回 false,迭代就会停止。 谓词使用三个参数调用:(value, index|key, collection)。
注意: 此方法为 空集合 返回 true
,因为 一切都是真的 的空集合元素。
引入版本 0.1.0
参数:(collection, [predicate=_.identity])
collection
(Array|Object): 要迭代的集合。[predicate=_.identity]
(Function): 每次迭代调用的函数。
返回:(boolean)
如果所有元素都通过谓词检查,则返回 true
,否则返回 false
。
示例
_.every([true, 1, null, 'yes'], Boolean)
const users = [{ user: 'barney', age: 36, active: false }, { user: 'fred', age: 40, active: false }]
_.every(users, { user: 'barney', active: false })
_.every(users, ['active', false])
_.every(users, 'active')
_.filter
遍历collection
的元素,返回所有元素的数组predicate
返回truthy for。 谓词使用三个参数调用:(value, index|key, collection)。
注意: 与 _.remove
不同,此方法返回一个新数组。
引入版本 0.1.0
参数:(collection, [predicate=_.identity])
collection
(Array|Object): 要迭代的集合。[predicate=_.identity]
(Function): 每次迭代调用的函数。
返回 (Array): 返回新的过滤数组。
示例
const users = [{ user: 'barney', age: 36, active: true }, { user: 'fred', age: 40, active: false }]
_.filter(users, (o) => {
return !o.active
})
_.filter(users, { age: 36, active: true })
_.filter(users, ['active', false])
_.filter(users, 'active')
_.find
迭代collection
的元素,返回第一个元素predicate
返回truthy for。 谓词使用三个参数调用:(value, index|key, collection)。
引入版本 0.1.0
参数:(collection, [predicate=_.identity], [fromIndex=0])
collection
(Array|Object): 要检查的集合。[predicate=_.identity]
(Function): 每次迭代调用的函数。[fromIndex=0]
(number): 要从中搜索的索引。
返回 (*): 返回匹配的元素,否则返回 undefined
。
示例
const users = [{ user: 'barney', age: 36, active: true }, { user: 'fred', age: 40, active: false }, { user: 'pebbles', age: 1, active: true }]
_.find(users, (o) => {
return o.age < 40
})
_.find(users, { age: 1, active: true })
_.find(users, ['active', false])
_.find(users, 'active')
_.findLast
此方法类似于 _.find
,只是它从右到左迭代 collection
的元素。
引入版本 2.0.0
参数:(collection, [predicate=_.identity], [fromIndex=collection.length-1])
collection
(Array|Object): 要检查的集合。[predicate=_.identity]
(Function): 每次迭代调用的函数。[fromIndex=collection.length-1]
(number): 要从中搜索的索引。
返回 (*): 返回匹配的元素,否则返回 undefined
。
示例
_.findLast([1, 2, 3, 4], (n) => {
return n % 2 === 1
})
_.flatMap
通过运行 collection
到 iteratee
中的每个元素并展平映射的结果,创建一个展平的值数组。 使用三个参数调用迭代对象:(value, index|key, collection)。
引入版本 4.0.0
参数:(collection, [iteratee=_.identity])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 每次迭代调用的函数。
返回 (Array): 返回新的展平数组。
示例
function duplicate(n) {
return [n, n]
}
_.flatMap([1, 2], duplicate)
_.flatMapDeep
此方法类似于 _.flatMap
,只是它递归地展平映射的结果。
引入版本 4.7.0
参数:(collection, [iteratee=_.identity])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 每次迭代调用的函数。
返回 (Array): 返回新的展平数组。
示例
function duplicate(n) {
return [[[n, n]]]
}
_.flatMapDeep([1, 2], duplicate)
_.flatMapDepth
此方法类似于 _.flatMap
,只是它递归地将映射结果展平到 depth
次。
引入版本 4.7.0
参数:(collection, [iteratee=_.identity], [depth=1])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 每次迭代调用的函数。[depth=1]
(number): 最大递归深度。
返回 (Array): 返回新的展平数组。
示例
function duplicate(n) {
return [[[n, n]]]
}
_.flatMapDepth([1, 2], duplicate, 2)
_.forEach
遍历 collection
的元素并为每个元素调用 iteratee
。 使用三个参数调用迭代对象:(value, index|key, collection)。 Iteratee 函数可以通过显式返回 false
提前退出迭代。
注意: 与其他“集合”方法一样,具有“长度”属性的对象像数组一样被迭代。 要避免这种行为,请使用 _.forIn
或 _.forOwn
用于对象迭代。
引入版本 0.1.0
Aliases
_.each
参数:(collection, [iteratee=_.identity])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 每次迭代调用的函数。
返回 (*): 返回 collection
.
示例
_.forEach([1, 2], (value) => {
console.log(value)
})
_.forEach({ a: 1, b: 2 }, (value, key) => {
console.log(key)
})
_.forEachRight
此方法类似于 _.forEach
,只是它从右到左迭代 collection
的元素。
引入版本 2.0.0
Aliases
_.eachRight
参数:(collection, [iteratee=_.identity])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 每次迭代调用的函数。
返回 (*): 返回 collection
.
示例
_.forEachRight([1, 2], (value) => {
console.log(value)
})
_.groupBy
创建一个由运行 collection
到 iteratee
的每个元素的结果生成的键组成的对象。 分组值的顺序由它们在“集合”中出现的顺序决定。 每个键对应的值是负责生成键的元素数组。 使用一个参数调用迭代对象:(value)。
引入版本 0.1.0
参数:(collection, [iteratee=_.identity])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 转换键的迭代器。
返回 (Object): 返回组合的聚合对象。
示例
_.groupBy([6.1, 4.2, 6.3], Math.floor)
_.groupBy(['one', 'two', 'three'], 'length')
_.includes
检查 value
是否在 collection
中。 如果 collection
是字符串,则检查 value
的子字符串,否则 SameValueZero
用于相等 比较。 如果 fromIndex
是负数,它被用作从 collection
末尾的偏移量。
引入版本 0.1.0
参数:(collection, value, [fromIndex=0])
collection
(Array|Object|string): 要检查的集合。value
(*): The value to search for.[fromIndex=0]
(number): 要从中搜索的索引。
返回 (boolean): 如果找到 value
,则返回 true
,否则返回 false
。
示例
_.includes([1, 2, 3], 1)
_.includes([1, 2, 3], 1, 2)
_.includes({ a: 1, b: 2 }, 1)
_.includes('abcd', 'bc')
_.invokeMap
在 collection
中每个元素的 path
调用方法,返回每个调用方法的结果数组。 为每个调用的方法提供任何附加参数。 如果 path
是一个函数,它会被调用,并且 this
绑定到 collection
中的每个元素。
引入版本 4.0.0
参数:(collection, path, [args])
collection
(Array|Object): 要迭代的集合。path
(Array|Function|string): 要调用的方法的路径或每次迭代调用的函数。[args]
(...*): 调用每个方法的参数。
返回 (Array): 返回结果数组。
示例
_.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort')
_.invokeMap([123, 456], String.prototype.split, '')
_.keyBy
创建一个由运行 collection
到 iteratee
的每个元素的结果生成的键组成的对象。 每个键对应的值是负责生成键的最后一个元素。 使用一个参数调用迭代对象:(value)。
引入版本 4.0.0
参数:(collection, [iteratee=_.identity])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 转换键的迭代器。
返回 (Object): 返回组合的聚合对象。
示例
const array = [{ dir: 'left', code: 97 }, { dir: 'right', code: 100 }]
_.keyBy(array, (o) => {
return String.fromCharCode(o.code)
})
_.keyBy(array, 'dir')
_.map
通过运行 collection
到 iteratee
中的每个元素来创建一个值数组。 使用三个参数调用 iteratee:(value, index|key, collection)。
许多 lodash 方法被保护为像 _.every
、_.filter
、_.map
、_.mapValues
、_.reject
和 _.some
。
受保护的方法是: ary
, chunk
, curry
, curryRight
, drop
, dropRight
, every
, fill
, invert
, parseInt
, random
, range
, rangeRight
, repeat
, sampleSize
, slice
, some
, sortBy
, split
, take
, takeRight
, template
, trim
, trimEnd
, trimStart
, and words
引入版本 0.1.0
参数:(collection, [iteratee=_.identity])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 每次迭代调用的函数。
返回 (Array): 返回新的映射数组。
示例
function square(n) {
return n * n
}
_.map([4, 8], square)
_.map({ a: 4, b: 8 }, square)
const users = [{ user: 'barney' }, { user: 'fred' }]
_.map(users, 'user')
_.orderBy
这个方法类似于_sortBy
,除了它允许指定要测试的排序顺序的重新工具。 否则,为相应值的降序指定“desc”或“asc”为升序排序。
引入版本 4.0.0
参数:(collection, [iteratees=[_.identity]], [orders])
collection
(Array|Object): 要迭代的集合。[iteratees=[_.identity]]
(Array[]|Function[]|Object[]|string[]): 要排序的迭代器。[orders]
(string[]):iteratees
的排序顺序。
返回 (Array): 返回新的排序数组。
示例
const users = [{ user: 'fred', age: 48 }, { user: 'barney', age: 34 }, { user: 'fred', age: 40 }, { user: 'barney', age: 36 }]
_.orderBy(users, ['user', 'age'], ['asc', 'desc'])
_.partition
创建一个元素数组,分成两组,第一组包含元素predicate
返回真值,第二组包含元素predicate
返回假值。 谓词用一个参数调用:(value)。
引入版本 3.0.0
参数:(collection, [predicate=_.identity])
collection
(Array|Object): 要迭代的集合。[predicate=_.identity]
(Function): 每次迭代调用的函数。
返回 (Array): 返回分组元素的数组。
示例
const users = [{ user: 'barney', age: 36, active: false }, { user: 'fred', age: 40, active: true }, { user: 'pebbles', age: 1, active: false }]
_.partition(users, (o) => {
return o.active
})
_.partition(users, { age: 1, active: false })
_.partition(users, ['active', false])
_.partition(users, 'active')
_.reduce
将 collection
减少到一个值,该值是运行 collection
到 iteratee
中的每个元素的累积结果,其中每个连续调用都提供前一个的返回值。 如果 accumulator
没有给出,collection
的第一个元素被用作初始值。 使用四个参数调用 iteratee:(accumulator, value, index|key, collection)。
许多 lodash 方法被保护为像 _.reduce
、_.reduceRight
和 _.transform
。
受保护的方法是:assign
, defaults
, defaultsDeep
, includes
, merge
, orderBy
, sortBy
引入版本 0.1.0
参数:(collection, [iteratee=_.identity], [accumulator])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 每次迭代调用的函数。[accumulator]
(*): 初始值。
返回 (*): 返回累计值。
示例
_.reduce([1, 2], (sum, n) => {
return sum + n
}, 0)
_.reduce({ a: 1, b: 2, c: 1 }, (result, value, key) => {
(result[value] || (result[value] = [])).push(key)
return result
}, {})
_.reduceRight
此方法类似于 _.reduce
,只是它从右到左迭代 collection
的元素。
引入版本 0.1.0
参数:(collection, [iteratee=_.identity], [accumulator])
collection
(Array|Object): 要迭代的集合。[iteratee=_.identity]
(Function): 每次迭代调用的函数。[accumulator]
(*): 初始值。
返回 (*): 返回累计值。
示例
const array = [[0, 1], [2, 3], [4, 5]]
_.reduceRight(array, (flattened, other) => {
return flattened.concat(other)
}, [])
_.reject
_.filter
的反义词; 此方法返回 collection
的元素,predicate
不 返回 truthy。
引入版本 0.1.0
参数:(collection, [predicate=_.identity])
collection
(Array|Object): 要迭代的集合。[predicate=_.identity]
(Function): 每次迭代调用的函数。
返回 (Array): 返回新的过滤数组。
示例
const users = [{ user: 'barney', age: 36, active: false }, { user: 'fred', age: 40, active: true }]
_.reject(users, (o) => {
return !o.active
})
_.reject(users, { age: 40, active: true })
_.reject(users, ['active', false])
_.reject(users, 'active')
_.sample
从 collection
中获取一个随机元素。
引入版本 2.0.0
参数:(collection)
collection
(Array|Object): 要采样的集合。
返回 (*): 返回随机元素。
示例
_.sampleSize
从 collection
中获取唯一键的 n
个随机元素,直到 collection
的大小。
引入版本 4.0.0
参数:(collection, [n=1])
collection
(Array|Object): 要采样的集合。[n=1]
(number): 要采样的元素数。
返回 (Array): 返回随机元素。
示例
_.sampleSize([1, 2, 3], 2)
_.sampleSize([1, 2, 3], 4)
_.shuffle
使用 Fisher-Yates shuffle 的一个版本创建一个混洗值数组。
引入版本 0.1.0
参数:(collection)
collection
(Array|Object): 要洗牌的集合。
返回 (Array): 返回新的洗牌数组。
示例
_.size
通过返回类似数组的值的长度或对象自己的可枚举字符串键控属性的数量来获取collection
的大小。
引入版本 0.1.0
参数:(collection)
collection
(Array|Object|string): 要检查的集合。
返回 (number): 返回集合大小。
示例
_.size([1, 2, 3])
_.size({ a: 1, b: 2 })
_.size('pebbles')
_.some
检查 predicate
是否为 collection
的 any 元素返回真值。 一旦“谓词”返回真值,迭代就会停止。 谓词使用三个参数调用:(value, index|key, collection)。
引入版本 0.1.0
参数:(collection, [predicate=_.identity])
collection
(Array|Object): 要迭代的集合。[predicate=_.identity]
(Function): 每次迭代调用的函数。
返回 (boolean): 如果任何元素通过谓词检查,则返回 true
,否则返回 false
。
示例
_.some([null, 0, 'yes', false], Boolean)
const users = [{ user: 'barney', active: true }, { user: 'fred', active: false }]
_.some(users, { user: 'barney', active: false })
_.some(users, ['active', false])
_.some(users, 'active')
_.sortBy
创建一个元素数组,按通过每个迭代器运行集合中的每个元素的结果按升序排序。 此方法执行稳定排序,即保留相等元素的原始排序顺序。 使用一个参数调用迭代器:(value)。
引入版本 0.1.0
参数:(collection, [iteratees=[_.identity]])
collection
(Array|Object): 要迭代的集合。[iteratees=[_.identity]]
(...(Function|Function[])): 要排序的迭代器。
返回 (Array): 返回新的排序数组。
示例
const users = [{ user: 'fred', age: 48 }, { user: 'barney', age: 36 }, { user: 'fred', age: 40 }, { user: 'barney', age: 34 }]
_.sortBy(users, [function (o) {
return o.user
}])
_.sortBy(users, ['user', 'age'])