# 排序插入索引

使用 lodash _.sortedIndex 查找排序数组插入索引

> 标准页面: https://elysiatools.com/zh/tools/sorted-index

- **分类:** Data Processing

- **关键词:** 数组, 排序, 索引, 插入, lodash

## 概述

返回在排序数组中保持顺序所需插入的位置索引。

**亮点：**
- 使用 lodash `_.sortedIndex`
- 适用于已排序 JSON 数组
- 返回插入索引文本

**示例：**
- 数组：`[10, 20, 30]`
- 值：`25`
- 结果：`2`

## 输入项

- **数组** (textarea): 输入已排序的 JSON 数组
- **值** (text): 要插入的值（JSON 或文本）

## 适用场景

- 需要在不破坏现有排序的前提下，向一个已排序的数组中插入新元素时。
- 处理大量有序数据（如时间戳、分数、ID），需要高效确定插入点以避免全数组重排时。
- 在算法或数据处理流程中，需要验证某个值在有序序列中的理论位置时。

## 工作原理

- 在“数组”输入框中，粘贴或输入一个已按升序排列的 JSON 数组。
- 在“值”输入框中，输入你想要插入的值（可以是数字、字符串等，需与数组元素类型兼容）。
- 工具内部调用 lodash 的 `_.sortedIndex` 算法，计算该值应插入的索引位置。
- 计算完成后，工具将返回一个表示索引的数字文本（例如 `2`），该索引从 0 开始计数。

## 使用案例

- 在数据流处理中，将新的时间戳数据点插入到已排序的时间序列数组中。
- 在游戏开发中，将玩家的新分数动态插入到本地维护的已排序高分排行榜中。
- 在算法练习或教学中，演示二分查找或有序数组插入的原理。

## 常见问题

### 输入的数组必须是已排序的吗？

是的，这是使用本工具的前提。输入数组必须是升序排列的，否则返回的索引将无意义。

### 支持哪些数据类型？

支持数字、字符串等可比较的类型。数组内元素类型应一致，且插入值的类型应与之兼容。

### 返回的索引 `2` 是什么意思？

表示该值应插入到数组索引为 2 的位置（即第三个元素之前），插入后数组仍保持升序。

### 如果数组为空会怎样？

对于空数组，工具将返回索引 `0`，表示应插入到第一个位置。

### 这个工具和普通的 `indexOf` 有什么区别？

`indexOf` 用于查找数组中已存在元素的索引。本工具用于查找一个（可能不存在的）值为了保持排序而应该插入的位置索引。

## 相关工具

- [数组交集](https://elysiatools.com/zh/tools/intersection-arrays): 使用 lodash _.intersection 查找多个数组的共同值
- [查找键](https://elysiatools.com/zh/tools/find-key): 使用 lodash _.findKey 查找第一个匹配的键
- [路径取值](https://elysiatools.com/zh/tools/get-path): 使用 lodash _.get 按路径取值
- [按键分组](https://elysiatools.com/zh/tools/group-by): 使用 lodash _.groupBy 按派生键分组
- [获取首个元素](https://elysiatools.com/zh/tools/head-item): 使用 lodash _.head 获取数组的第一个元素
- [查找索引](https://elysiatools.com/zh/tools/index-of): 使用 lodash _.indexOf 查找值在数组中的索引
- [获取除最后一个元素](https://elysiatools.com/zh/tools/initial-items): 使用 lodash _.initial 获取除最后一个元素外的所有元素
- [第 N 项](https://elysiatools.com/zh/tools/nth-item): 使用 lodash _.nth 获取指定索引的元素

## 示例

- [二维码示例](https://elysiatools.com/zh/samples/qrcode-samples): 用于测试二维码读取和生成工具的示例二维码图像
- [分布式追踪示例](https://elysiatools.com/zh/samples/distributed-tracing-samples): 使用 Jaeger、OpenTelemetry 和其他现代可观测性工具的综合分布式追踪示例，适用于微服务架构
- [ELK Stack 日志分析示例](https://elysiatools.com/zh/samples/elk-stack-samples): 全面的 ELK Stack（Elasticsearch、Logstash、Kibana）示例，用于分布式系统中的日志聚合、处理和可视化
- [Grafana 高级应用示例](https://elysiatools.com/zh/samples/grafana-samples): 全面的 Grafana 示例，涵盖高级仪表板设计、告警配置、数据源集成和插件开发
