数组方法 Array Methods

Lodash v4 数组的使用方法

_.chunk

创建一个元素数组,按照“size”的长度分组。 如果 array 不能被平均分割,最后的块将是剩余的元素。

引入版本 3.0.0

source / npm package

参数 _.chunk(array, [size=1])

  1. arry (Array): 要处理的数组。
  2. [size=1] (number): 每个块的长度

返回

(Array): 返回新的块数组。

示例

js
_.chunk(['a''b''c''d'], 2)
_.chunk(['a''b''c''d'], 3)

_.compact

创建一个删除所有错误值的数组。 值 falsenull0""undefinedNaN 是错误的。

引入版本 0.1.0

source / npm package

参数 _.compact(array)

  1. array (Array): 要压的数组。

返回

(Array): 返回过滤值的新数组。

示例

js
_.compact([01false2''3])

_.concat

创建一个新数组,将 array 与任何其他数组和/或值连接起来。

引入版本 4.0.0

source / npm package

参数 (array, [values])

  1. array (Array): 要连接的数组。
  2. [values] (...*): 要连接的值。

返回

(Array): 返回新的串联数组。

示例

js
const array = [1]
const other = _.concat(array2, [3], [[4]])
console.log(other)
console.log(array)

_.difference

使用 SameValueZero 创建一个不包含在其他给定数组中的 array 值数组以进行相等比较。 结果值的顺序和引用由第一个数组确定。

注意:_.pullAll 不同,此方法返回一个新数组。

引入版本 0.1.0

source / npm package

参数 (array, [values])

  1. array (Array): 要检查的数组。
  2. [values] (...Array): 要排除的值。

返回

(Array): 返回过滤值的新数组。

示例

js
_.difference([21], [23])

_.differenceBy

此方法类似于 _.difference,只是它接受为 arrayvalues 的每个元素调用的 iteratee 生成比较它们的标准。 结果值的顺序和引用由第一个数组确定。 使用一个参数调用 iteratee: (value).

注意:_.pullAllBy 不同,此方法返回一个新数组。

引入版本 4.0.0

source / npm package

参数 (array, [values], [iteratee=_.identity])

  1. array (Array): 要检查的数组。
  2. [values] (...Array): 要排除的值。
  3. [iteratee=_.identity] (Function): 每个元素调用的迭代对象。

返回

(Array): 返回过滤值的新数组。

示例

js
_.differenceBy([2.11.2], [2.33.4], Math.floor)
_.differenceBy([{ x2 }, { x1 }], [{ x1 }], 'x')

_.differenceWith

这个方法类似于 _.difference,除了它接受 comparator 来比较 array 的元素和 values。 结果值的顺序和引用由第一个数组确定。 比较器使用两个参数调用:(arrVal, othVal)

注意:_.pullAllWith 不同,此方法返回一个新数组。

引入版本 4.0.0

source / npm package

参数 (array, [values], [comparator])

  1. array (Array): 要检查的数组。
  2. [values] (...Array): 要排除的值。
  3. [comparator] (Function): 每个元素调用的比较器。

返回

(Array): 返回过滤值的新数组。

示例

js
const objects = [{ x1y2 }, { x2y1 }]
_.differenceWith(objects, [{ x1y2 }], _.isEqual)

_.drop

创建一个 array 切片,其中从开头删除了 n 个元素。

引入版本 0.5.0

source / npm package

参数 (array, [n=1])

  1. array (Array): 要查询的数组。
  2. [n=1] (number): 要删除的元素数。

返回

(Array): 返回 array 的切片。

示例

js
_.drop([123])
_.drop([123], 2)
_.drop([123], 5)
_.drop([123], 0)

_.dropRight

创建一个 array 切片,其中从末尾删除了 n 个元素。

引入版本 3.0.0

source / npm package

参数 (array, [n=1])

  1. array (Array): 要查询的数组。
  2. [n=1] (number): 要删除的元素数。

返回

(Array): 返回 array 的切片。

示例

js
_.dropRight([123])
_.dropRight([123], 2)
_.dropRight([123], 5)
_.dropRight([123], 0)

_.dropRightWhile

创建一个 array 的切片,不包括从末尾删除的元素。 元素被删除,直到 predicate 返回 false。 谓词使用三个参数调用:(value, index, array)

引入版本 3.0.0

source / npm package

参数 (array, [predicate=_.identity])

  1. array (Array): 要查询的数组。
  2. [predicate=_.identity] (Function): 每次迭代调用的函数。

返回

(Array): 返回 array 的切片。

示例

js
const users = [
user'barney',  activetrue },
user'fred',    activefalse },
user'pebbles'activefalse },
]
_.dropRightWhile(users, (o) => { return !o.active })
_.dropRightWhile(users, { user'pebbles'activefalse })
_.dropRightWhile(users, ['active'false])
_.dropRightWhile(users'active')

_.dropWhile

创建一个 array 的切片,不包括从开头删除的元素。 元素被删除,直到 predicate 返回 false。 谓词使用三个参数调用:(value, index, array)

引入版本 3.0.0

source / npm package

参数 (array, [predicate=_.identity])

  1. array (Array): 要查询的数组。
  2. [predicate=_.identity] (Function): 每次迭代调用的函数。

返回

(Array):返回 array 的切片。

示例

js
const users = [
user'barney',  activefalse },
user'fred',    activefalse },
user'pebbles'activetrue }
]
_.dropWhile(users, (o) => { return !o.active })
_.dropWhile(users, { user'barney'activefalse })
_.dropWhile(users, ['active'false])
_.dropWhile(users'active')

_.fill

start 到但不包括 endvalue 填充 array 的元素。

注意: 此方法会改变 array

引入版本 3.2.0

source / npm package

参数 (array, value, [start=0], [end=array.length])

  1. array (Array): 要填充的数组。
  2. value (*): 用于填充 array 的值。
  3. [start=0] (number): 起始位置。
  4. [end=array.length] (number): 结束位置。

返回

(Array): 返回 array.

示例

js
const array = [123]
_.fill(array'a')
console.log(array)
_.fill(Array(3), 2)
_.fill([46810], '*'13)

_.findIndex

此方法类似于 _.find,只是它返回第一个元素的索引 predicate 返回truthy for 而不是元素本身。

引入版本 1.1.0

source / npm package

参数 (array, [predicate=_.identity], [fromIndex=0])

  1. array (Array): 要检查的数组。
  2. [predicate=_.identity] (Function): 每次迭代调用的函数。
  3. [fromIndex=0] (number): 要从中搜索的索引。

返回

(number): 返回找到的元素的索引,否则为 -1

示例

js
const users = [
  { user: 'barney', active: false },
  { user: 'fred', active: false },
  { user: 'pebbles', active: true }
]
_.findIndex(users, (o) => { return o.user == 'barney' })
_.findIndex(users, { user: 'fred', active: false })
_.findIndex(users, ['active', false])
_.findIndex(users, 'active')

_.findLastIndex

此方法类似于 _.findIndex,只是它从右到左迭代 collection 的元素。

引入版本 2.0.0

source / npm package

参数 (array, [predicate=_.identity], [fromIndex=array.length-1])

  1. array (Array): 要检查的数组。
  2. [predicate=_.identity] (Function): 每次迭代调用的函数。
  3. [fromIndex=array.length-1] (number): 要从中搜索的索引。

返回

(number): 返回找到的元素的索引,否则为 -1

示例

js
const users = [
user'barney',  activetrue },
user'fred',    activefalse },
user'pebbles'activefalse },
]
_.findLastIndex(users, (o) => { return o.user == 'pebbles' })
_.findLastIndex(users, { user'barney'activetrue })
_.findLastIndex(users, ['active'false])
_.findLastIndex(users'active')

_.flatten

array 展平单层深度。

引入版本 0.1.0

source / npm package

参数 (array)

  1. array (Array): 要展平的阵列。

返回

(Array): 返回新的展平数组。

示例

js
_.flatten([1, [2, [3, [4]], 5]])

_.flattenDeep

递归地展平array

引入版本 3.0.0

source / npm package

参数 (array)

  1. array (Array): 要展平的阵列。

返回

(Array): 返回新的展平数组。

示例

js
_.flattenDeep([1, [2, [3, [4]], 5]])

_.flattenDepth

递归地将 array 展平到 depth 次。

引入版本 4.4.0

source / npm package

参数 (array, [depth=1])

  1. array (Array): 要展平的阵列。
  2. [depth=1] (number): 最大递归深度。

返回

(Array): 返回新的展平数组。

示例

js
const array = [1, [2, [3, [4]], 5]]
_.flattenDepth(array1)
_.flattenDepth(array2)

_.fromPairs

_.toPairs的倒数; 此方法返回一个由键值对组成的对象。

引入版本 4.0.0

source / npm package

参数 (pairs)

  1. pairs (Array): 键值对。

返回

(Object): 返回新对象。

示例

js
_.fromPairs([['a'1], ['b'2]])

_.head

获取 array 的第一个元素。

引入版本 0.1.0

source / npm package

Aliases

_.first

参数 (array)

  1. array (Array): 要查询的数组。

返回

(*): 返回 array 的第一个元素。

示例

js
_.head([123])
_.head([])

_.indexOf

使用 SameValueZero 获取在 array 中找到第一次出现 value 的索引以进行相等比较。 如果 fromIndex 为负数,则用作距 array 末尾的偏移量。

引入版本 0.1.0

source / npm package

参数 (array, value, [fromIndex=0])

  1. array (Array): 要检查的数组。
  2. value (*): 要搜索的值。
  3. [fromIndex=0] (number): 要从中搜索的索引。

返回

(number): 返回匹配值的索引,否则为 -1

示例

js
_.indexOf([1212], 2)
_.indexOf([1212], 22)

_.initial

获取 array 的最后一个元素以外的所有元素。

引入版本 0.1.0

source / npm package

参数 (array)

  1. array (Array): 要查询的数组。

返回

(Array): 返回 array 的切片。

示例

js
_.initial([1, 2, 3])
// => [1, 2]

_.intersection

使用 SameValueZero 创建一个包含在所有给定数组中的唯一值数组以进行相等比较。 结果值的顺序和引用由第一个数组确定。

引入版本 0.1.0

source / npm package

参数 ([arrays])

  1. [arrays] (...Array): 要检查的数组。

返回

(Array): 返回相交值的新数组。

示例

js
_.intersection([21], [23])

_.intersectionBy

此方法类似于 _.intersection,除了它接受为每个 arrays 的每个元素调用以生成标准的 iteratee 通过它们进行比较。 结果值的顺序和引用由第一个数组确定。 使用一个参数调用 iteratee:(value).

引入版本 4.0.0

source / npm package

参数 ([arrays], [iteratee=_.identity])

  1. [arrays] (...Array): 要检查的数组。
  2. [iteratee=_.identity] (Function): 每个元素调用的迭代对象。

返回

(Array): 返回相交值的新数组。

示例

js
_.intersectionBy([2.11.2], [2.33.4], Math.floor)
_.intersectionBy([{ x1 }], [{ x2 }, { x1 }], 'x')

_.intersectionWith

此方法类似于 _.intersection,不同之处在于它接受调用以比较 arrays 的元素的 comparator。 结果值的顺序和引用由第一个数组确定。 比较器使用两个参数调用:(arrVal, othVal)

引入版本 4.0.0

source / npm package

参数 ([arrays], [comparator])

  1. [arrays] (...Array): 要检查的数组。
  2. [comparator] (Function): 每个元素调用的比较器。

返回

(Array): 返回相交值的新数组。

示例

js
const objects = [{ x1y2 }, { x2y1 }]
const others = [{ x1y1 }, { x1y2 }]
_.intersectionWith(objectsothers_.isEqual)

_.join

array 中的所有元素转换为由 separator 分隔的字符串。

引入版本 4.0.0

source / npm package

参数 (array, [separator=','])

  1. array (Array): 要转换的数组。
  2. [separator=','] (string): 元素分隔符。

返回

(string): 返回连接的字符串。

示例

js
_.join(['a''b''c'], '~')

_.last

获取 array 的最后一个元素。

引入版本 0.1.0

source / npm package

参数 (array)

  1. array (Array): 要查询的数组。

返回

(*): 返回 array 的最后一个元素。

示例

js
_.last([1, 2, 3])
// => 3

_.lastIndexOf

此方法类似于 _.indexOf,只是它从右到左迭代 array 的元素。

引入版本 0.1.0

source / npm package

参数 (array, value, [fromIndex=array.length-1])

  1. array (Array): 要检查的数组。
  2. value (*): 要搜索的值。
  3. [fromIndex=array.length-1] (number): 要从中搜索的索引。

返回

(number): 返回匹配值的索引,否则为 -1

示例

js
_.lastIndexOf([1212], 2)
_.lastIndexOf([1212], 22)

_.nth

获取 array 的索引 n 处的元素。 如果 n 为负数,则返回倒数第 n 个元素。

引入版本 4.11.0

source / npm package

参数 (array, [n=0])

  1. array (Array): 要查询的数组。
  2. [n=0] (number): 要返回的元素的索引。

返回

(*): 返回 array 的第 n 个元素。

示例

js
const array = ['a''b''c''d']
_.nth(array1)
_.nth(array-2)

_.pull

使用 SameValueZeroarray 中删除所有给定值以进行相等比较。

注意:_.without 不同,此方法会改变 array。 使用 _.remove 通过谓词从数组中删除元素。

引入版本 2.0.0

source / npm package

参数 (array, [values])

  1. array (Array): 要修改的数组。
  2. [values] (...*): 要删除的值。

返回

(Array): 返回“数组”。

示例

js
const array = ['a''b''c''a''b''c']
_.pull(array'a''c')
console.log(array)

_.pullAll

此方法类似于 _.pull,只是它接受要删除的值数组。

注意:_.difference 不同,此方法会改变 array

引入版本 4.0.0

source / npm package

参数 (array, values)

  1. array (Array): 要修改的数组。
  2. values (Array): 要删除的值。

返回

(Array): 返回array

示例

js
const array = ['a''b''c''a''b''c']
_.pullAll(array, ['a''c'])
console.log(array)

_.pullAllBy

此方法类似于 _.pullAll,除了它接受为 arrayvalues 的每个元素调用的 iteratee 生成比较它们的标准。 使用一个参数调用迭代对象:(value)

注意:_.differenceBy 不同,此方法会改变 array

引入版本 4.0.0

source / npm package

参数 (array, values, [iteratee=_.identity])

  1. array (Array): 要修改的数组。
  2. values (Array): 要删除的值。
  3. [iteratee=_.identity] (Function): 每个元素调用的迭代对象。

返回

(Array): 返回array

示例

js
const array = [{ x1 }, { x2 }, { x3 }, { x1 }]
_.pullAllBy(array, [{ x1 }, { x3 }], 'x')
console.log(array)

_.pullAllWith

This method is like _.pullAll except that it accepts comparator which is invoked to compare elements of array to values. The comparator is invoked with two arguments: (arrVal, othVal).

Note: Unlike _.differenceWith, this method mutates array.

引入版本 4.6.0

source / npm package

参数 (array, values, [comparator])

  1. array (Array): 要修改的数组。
  2. values (Array): 要删除的值。
  3. [comparator] (Function): 每个元素调用的比较器。

返回

(Array): 返回 array.

示例

js
const array = [{ x1y2 }, { x3y4 }, { x5y6 }]
_.pullAllWith(array, [{ x3y4 }], _.isEqual)
console.log(array)

_.pullAt

array 中删除与 indexes 对应的元素,并返回一个已删除元素的数组。

注意:_.at 不同,此方法会改变 array

引入版本 3.0.0

source / npm package

参数 (array, [indexes])

  1. array (Array): 要修改的数组。
  2. [indexes] (...(number|number[])): 要删除的元素的索引。

返回

(Array): 返回已删除元素的新数组。

示例

js
const array = ['a''b''c''d']
const pulled = _.pullAt(array, [13])
console.log(array)
console.log(pulled)

_.remove

array 中删除所有 predicate 为其返回真值的元素,并返回已删除元素的数组。 谓词使用三个参数调用:(value, index, array)

注意:_.filter 不同,此方法会改变 array。 使用 _.pull 按值从数组中提取元素。

引入版本 2.0.0

source / npm package

参数 (array, [predicate=_.identity])

  1. array (Array): 要修改的数组。
  2. [predicate=_.identity] (Function): 每次迭代调用的函数。

返回

(Array): 返回已删除元素的新数组。

示例

js
const array = [1234]
const evens = _.remove(array, (n) => {  return n % 2 == 0 })
console.log(array)
console.log(evens)

_.reverse

反转“数组”,使第一个元素成为最后一个元素,第二个元素成为倒数第二个元素,依此类推。

注意: 此方法对 array 进行变异,并基于 Array#reverse

引入版本 4.0.0

source / npm package

参数 (array)

  1. array (Array): 要修改的数组。

返回

(Array): 返回 array.

示例

js
const array = [123]
_.reverse(array)
console.log(array)

_.slice

创建从 start 到但不包括 endarray 切片。

注意: 此方法用于代替 Array#slice 以确保返回密集数组。

引入版本 3.0.0

source / npm package

参数 (array, [start=0], [end=array.length])

  1. array (Array): 要切片的数组。
  2. [start=0] (number): 起始位置。
  3. [end=array.length] (number): 结束位置。

返回

(Array): 返回 array 的切片。

_.sortedIndex

使用二进制搜索来确定 value 应该插入到 array 的最低索引,以保持其排序顺序。

引入版本 0.1.0

source / npm package

参数 (array, value)

  1. array (Array): 要检查的排序数组。
  2. value (*): 要评估的值。

返回

(number): 返回 value 应该插入 array 的索引。

示例

js
_.sortedIndex([3050], 40)

_.sortedIndexBy

此方法类似于 _.sortedIndex,除了它接受为 value 调用的 iterateearray 的每个元素 计算他们的排序排名。 使用一个参数调用迭代对象:(value)

引入版本 4.0.0

source / npm package

参数 (array, value, [iteratee=_.identity])

  1. array (Array): 要检查的排序数组。
  2. value (*): 要评估的值。
  3. [iteratee=_.identity] (Function): 每个元素调用的迭代对象。

返回

(number): 返回 value 应该插入 array 的索引。

示例

js
const objects = [{ x4 }, { x5 }]
_.sortedIndexBy(objects, { x4 }, (o) => { return o.x })
_.sortedIndexBy(objects, { x4 }, 'x')

_.sortedIndexOf

此方法类似于 _.indexOf,只是它对已排序的 array 执行二进制搜索。

引入版本 4.0.0

source / npm package

参数 (array, value)

  1. array (Array): 要检查的数组。
  2. value (*): 要搜索的值。

返回

(number): 返回匹配值的索引,否则为 -1

示例

js
_.sortedIndexOf([45556], 5)

_.sortedLastIndex

此方法类似于 _.sortedIndex,只是它返回应将 value 插入 array 的最高索引,以便 保持其排序顺序。

引入版本 3.0.0

source / npm package

参数 (array, value)

  1. array (Array): 要检查的排序数组。
  2. value (*): 要评估的值。

返回

(number): 返回 value 应该插入 array 的索引。

示例

js
_.sortedLastIndex([45556], 5)

_.sortedLastIndexBy

此方法类似于 _.sortedLastIndex,除了它接受为 value 调用的 iterateearray 的每个元素 计算他们的排序排名。 使用一个参数调用迭代对象:(value)

引入版本 4.0.0

source / npm package

参数 (array, value, [iteratee=_.identity])

  1. array (Array): 要检查的排序数组。
  2. value (*): 要评估的值。
  3. [iteratee=_.identity] (Function): 每个元素调用的迭代对象。

返回

(number): 返回 value 应该插入 array 的索引。

示例

js
const objects = [{ x4 }, { x5 }]
_.sortedLastIndexBy(objects, { x4 }, (o) => { return o.x })
_.sortedLastIndexBy(objects, { x4 }, 'x')

_.sortedLastIndexOf

此方法类似于 _.lastIndexOf,只是它对已排序的 array 执行二进制搜索。

引入版本 4.0.0

source / npm package

参数 (array, value)

  1. array (Array): 要检查的数组。
  2. value (*): 要搜索的值。

返回

(number): 返回匹配值的索引,否则为 -1

示例

js
_.sortedLastIndexOf([45556], 5)

_.sortedUniq

此方法类似于 _.uniq,只是它是为排序数组设计和优化的。

引入版本 4.0.0

source / npm package

参数 (array)

  1. array (Array): 要检查的数组。

返回

(Array): 返回新的重复自由数组。

示例

js
_.sortedUniq([1, 1, 2])
// => [1, 2]

_.sortedUniqBy

此方法类似于 _.uniqBy,只是它是为排序数组设计和优化的。

引入版本 4.0.0

source / npm package

参数 (array, [iteratee])

  1. array (Array): 要检查的数组。
  2. [iteratee] (Function): 每个元素调用的迭代对象。

返回

(Array): 返回新的重复自由数组。

示例

js
_.sortedUniqBy([1.11.22.32.4], Math.floor)

_.tail

获取 array 的第一个元素以外的所有元素。

引入版本 4.0.0

source / npm package

参数 (array)

  1. array (Array): 要查询的数组。

返回

(Array): 返回 array 的切片。

示例

js
_.tail([1, 2, 3])
// => [2, 3]

_.take

使用从开头获取的 n 个元素创建一个 array 切片。

引入版本 0.1.0

source / npm package

参数 (array, [n=1])

  1. array (Array): 要查询的数组。
  2. [n=1] (number): 要采取的元素数量。

返回

(Array): 返回 array 的切片。

示例

js
_.take([123])
_.take([123], 2)
_.take([123], 5)
_.take([123], 0)

_.takeRight

创建一个 array 切片,其中包含从末尾获取的 n 个元素。

引入版本 3.0.0

source / npm package

参数 (array, [n=1])

  1. array (Array): 要查询的数组。
  2. [n=1] (number): 要采取的元素数量。

返回

(Array): 返回 array 的切片。

示例

js
_.takeRight([123])
_.takeRight([123], 2)
_.takeRight([123], 5)
_.takeRight([123], 0)

_.takeRightWhile

使用从末尾获取的元素创建一个 array 切片。 元素被取走,直到 predicate 返回 false。 谓词使用三个参数调用:(value, index, array)

引入版本 3.0.0

source / npm package

参数 (array, [predicate=_.identity])

  1. array (Array): 要查询的数组。
  2. [predicate=_.identity] (Function): 每次迭代调用的函数。

返回

(Array): 返回 array 的切片。

示例

js
const users = [{ user'barney',  activetrue },  { user'fred',    activefalse },  { user'pebbles'activefalse }]
_.takeRightWhile(users, (o) => { return !o.active })
_.takeRightWhile(users, { user'pebbles'activefalse })
_.takeRightWhile(users, ['active'false])
_.takeRightWhile(users'active')

_.takeWhile

使用从头开始的元素创建一个 array 切片。 元素被取走,直到 predicate 返回 false。 谓词使用三个参数调用:(value, index, array)

引入版本 3.0.0

source / npm package

参数 (array, [predicate=_.identity])

  1. array (Array): 要查询的数组。
  2. [predicate=_.identity] (Function): 每次迭代调用的函数。

返回

(Array): 返回 array 的切片。

示例

js
const users = [
user'barney',  activefalse },
user'fred',    activefalse },
user'pebbles'activetrue },
]
_.takeWhile(users, (o) => { return !o.active })
_.takeWhile(users, { user'barney'activefalse })
_.takeWhile(users, ['active'false])
_.takeWhile(users'active')

_.union

使用 SameValueZero 从所有给定数组中按顺序创建唯一值数组以进行相等比较。

引入版本 0.1.0

source / npm package

参数 ([arrays])

  1. [arrays] (...Array): 要检查的数组。

返回

(Array): 返回新的组合值数组。

示例

js
_.union([2], [1, 2])
// => [2, 1]

_.unionBy

此方法类似于 _.union,除了它接受为每个 arrays 的每个元素调用以生成标准的 iteratee 通过它计算唯一性。 结果值是从出现该值的第一个数组中选择的。 使用一个参数调用迭代对象:(value)

引入版本 4.0.0

source / npm package

参数 ([arrays], [iteratee=_.identity])

  1. [arrays] (...Array): 要检查的数组。
  2. [iteratee=_.identity] (Function): 每个元素调用的迭代对象。

返回

(Array): 返回新的组合值数组。

示例

js
_.unionBy([2.1], [1.22.3], Math.floor)
_.unionBy([{ x1 }], [{ x2 }, { x1 }], 'x')

_.unionWith

此方法与 _.union 类似,不同之处在于它接受被调用以比较 arrays 元素的 comparator。 结果值是从出现该值的第一个数组中选择的。 使用两个参数调用比较器:(arrVal, othVal)

引入版本 4.0.0

source / npm package

参数 ([arrays], [comparator])

  1. [arrays] (...Array): 要检查的数组。
  2. [comparator] (Function): 每个元素调用的比较器。

返回

(Array): 返回新的组合值数组。

示例

js
const objects = [{ x1y2 }, { x2y1 }]
const others = [{ x1y1 }, { x1y2 }]
_.unionWith(objectsothers_.isEqual)

_.uniq

创建数组的无重复版本,使用 SameValueZero 进行相等比较,其中只有每个第一次出现 元素被保留。 结果值的顺序由它们在数组中出现的顺序决定。

引入版本 0.1.0

source / npm package

参数 (array)

  1. array (Array): 要检查的数组。

返回

(Array): 返回新的重复自由数组。

示例

js
_.uniq([2, 1, 2])
// => [2, 1]

_.uniqBy

此方法类似于 _.uniq,只是它接受 iteratee,它为 array 中的每个元素调用以生成标准 计算哪个唯一性。 结果值的顺序由它们在数组中出现的顺序决定。 使用一个参数调用迭代对象:(value)

引入版本 4.0.0

source / npm package

参数 (array, [iteratee=_.identity])

  1. array (Array): 要检查的数组。
  2. [iteratee=_.identity] (Function): 每个元素调用的迭代对象。

返回

(Array): 返回新的重复自由数组。

示例

js
_.uniqBy([2.11.22.3], Math.floor)
_.uniqBy([{ x1 }, { x2 }, { x1 }], 'x')

_.uniqWith

此方法类似于 _.uniq,只是它接受调用以比较 array 的元素的 comparator。 结果值的顺序由它们在数组中出现的顺序决定。比较器使用两个参数调用:(arrVal, othVal)

引入版本 4.0.0

source / npm package

参数 (array, [comparator])

  1. array (Array): 要检查的数组。
  2. [comparator] (Function): 每个元素调用的比较器。

返回

(Array): 返回新的重复自由数组。

示例

js
const objects = [{ x1y2 }, { x2y1 }, { x1y2 }]
_.uniqWith(objects_.isEqual)

_.unzip

此方法类似于 _.zip,不同之处在于它接受一个分组元素数组并创建一个数组,将元素重新组合到其预压缩配置 .

引入版本 1.2.0

source / npm package

参数 (array)

  1. array (Array): 要处理的分组元素数组。

返回

(Array): 返回重新组合元素的新数组。

示例

js
const zipped = _.zip(['a''b'], [12], [truefalse])
_.unzip(zipped)

_.unzipWith

此方法类似于 _.unzip,只是它接受 iteratee 来指定应如何组合重新分组的值。 使用每个组的元素调用迭代对象:(...group)

引入版本 3.8.0

source / npm package

参数 (array, [iteratee=_.identity])

  1. array (Array): 要处理的分组元素数组。
  2. [iteratee=_.identity] (Function): 组合重新组合的值的功能。

返回

(Array): 返回重新组合元素的新数组。

示例

js
const zipped = _.zip([12], [1020], [100200])
_.unzipWith(zipped_.add)

_.without

使用 SameValueZero 创建一个排除所有给定值的数组以进行相等比较。

注意:_.pull 不同,此方法返回一个新数组。

引入版本 0.1.0

source / npm package

参数 (array, [values])

  1. array (Array): 要检查的数组。
  2. [values] (...*): 要排除的值。

返回

(Array): 返回过滤值的新数组。

示例

js
_.without([2123], 12)

_.xor

创建一个唯一值数组,它是给定数组的 对称差异。 结果值的顺序由它们在数组中出现的顺序决定。

引入版本 2.4.0

source / npm package

参数 ([arrays])

  1. [arrays] (...Array): 要检查的数组。

返回

(Array): 返回过滤值的新数组。

示例

js
_.xor([2, 1], [2, 3])
// => [1, 3]

_.xorBy

此方法类似于 _.xor,除了它接受为每个 arrays 的每个元素调用以生成标准的 iteratee 比较它们的依据。 结果值的顺序由它们在数组中出现的顺序决定。 使用一个参数调用迭代对象:(value)

引入版本 4.0.0

source / npm package

参数 ([arrays], [iteratee=_.identity])

  1. [arrays] (...Array): 要检查的数组。
  2. [iteratee=_.identity] (Function): 每个元素调用的迭代对象。

返回

(Array): 返回过滤值的新数组。

示例

js
_.xorBy([2.11.2], [2.33.4], Math.floor)
_.xorBy([{ x1 }], [{ x2 }, { x1 }], 'x')

_.xorWith

此方法类似于 _.xor,只是它接受调用以比较 arrays 的元素的comparator。 结果值的顺序由它们在数组中出现的顺序决定。 比较器使用两个参数调用:(arrVal, othVal)

引入版本 4.0.0

source / npm package

参数 ([arrays], [comparator])

  1. [arrays] (...Array): 要检查的数组。
  2. [comparator] (Function): 每个元素调用的比较器。

返回

(Array): 返回过滤值的新数组。

示例

js
const objects = [{ x1y2 }, { x2y1 }]
const others = [{ x1y1 }, { x1y2 }]
_.xorWith(objectsothers_.isEqual)

_.zip

创建一个分组元素数组,其中第一个包含给定数组的第一个元素,第二个包含给定数组的第二个元素,依此类推。

引入版本 0.1.0

source / npm package

参数 ([arrays])

  1. [arrays] (...Array): 要处理的数组。

返回

(Array): 返回分组元素的新数组。

示例

js
_.zip(['a''b'], [12], [truefalse])

_.zipObject

此方法类似于 _.fromPairs,只是它接受两个数组,一个属性标识符和一个对应值。

引入版本 0.4.0

source / npm package

参数 ([props=[]], [values=[]])

  1. [props=[]] (Array): 属性标识符。
  2. [values=[]] (Array): 属性值。

返回

(Object): 返回新对象。

示例

js
_.zipObject(['a''b'], [12])

_.zipObjectDeep

此方法类似于 _.zipObject,只是它支持属性路径。

引入版本 4.1.0

source / npm package

参数 ([props=[]], [values=[]])

  1. [props=[]] (Array): 属性标识符。
  2. [values=[]] (Array): 属性值。

返回

(Object): 返回新对象。

示例

js
_.zipObjectDeep(['a.b[0].c''a.b[1].d'], [12])

_.zipWith

此方法类似于 _.zip,只是它接受 iteratee 来指定应如何组合分组值。 使用每个组的元素调用迭代对象:(...group)

引入版本 3.8.0

source / npm package

参数 ([arrays], [iteratee=_.identity])

  1. [arrays] (...Array): 要处理的数组。
  2. [iteratee=_.identity] (Function): 组合分组值的函数。

返回

(Array): 返回分组元素的新数组。

示例

js
_.zipWith(
  [12],
  [1020],
  [100200],
  (abc) => {
    return a + b + c
  }
)