Skip to content

sortedIndex

INFO

出于兼容性原因,此函数仅在 es-toolkit/compat 中提供。它可能具有替代的原生 JavaScript API,或者尚未完全优化。

es-toolkit/compat 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 这里

查找应将给定值插入排序数组以保持其排序顺序的最低索引。

  • 如果数组已经排序,则 sortedIndex 将确保新值插入正确的位置,而不会打乱顺序。
  • 搜索采用二进制搜索算法,因此对大型数组而言效率很高。
  • 对于更复杂或自定义的排序逻辑,它将委托给 sortedIndexBy,后者允许指定一个 iteratee 函数来自定义元素的比较方式。

该函数返回应插入值的索引。如果数组中已经存在该值,返回的索引将位于该值第一次出现之前。

签名

typescript
function sortedIndex<T>(array: ArrayLike<T> | null | undefined, value: T): number

参数

  • array (ArrayLike<T> | null | undefined): 要检查的排序数组。可以是 null 或 undefined,在这种情况下,它将被视为空数组。
  • value (T): 要评估的值,并为插入找到合适的索引

返回值

(number): 应插入值的索引

示例

typescript

import { sortedIndex } from 'es-toolkit/compat'

// 数字数组的基本用法
sortedIndex([10, 20, 30, 50], 40);
// 返回值: 3
// 解释: 40 返回索引 3 以保持排序顺序。

// 处理空数组或 null 数组
sortedIndex(null, 25);
// 返回值:0
// 说明 空数组或未定义数组被视为空数组,因此返回 0。

// 使用默认比较逻辑(使用 sortedIndexBy 的委托行为)
sortedIndex([10, '20', 30], 25);
// 返回值:2
// 解释: 使用默认比较逻辑,返回索引 2。

采用 MIT 许可证发布。