# 按条件移除

使用 lodash _.remove 按条件移除数组元素

> 标准页面: https://elysiatools.com/zh/tools/remove-by-predicate

- **分类:** Data Processing

- **关键词:** 数组, 移除, 条件, 过滤, lodash

## 概述

当元素满足选择的谓词时将其从数组中移除。

**亮点：**
- 使用 lodash `_.remove`
- 支持数字和字符串比较
- 返回剩余数组的 JSON

**示例：**
- 数组：`[1, 2, 3, 4]`
- 谓词：`greater-than`
- 比较值：`2`
- 结果：`[1, 2]`

## 输入项

- **数组** (textarea): 输入 JSON 数组
- **谓词类型** (select): 选择移除条件
- **比较值** (text): 比较值（大多数谓词需要）

## 适用场景

- 需要从数组中批量移除满足特定条件（如大于、等于、包含某字符串）的元素时。
- 在进行数据预处理或清洗，希望快速过滤掉无效、异常或不符合要求的数据项时。
- 当您需要基于一个明确的规则（谓词）来精简数组内容，而不是手动逐一删除时。

## 工作原理

- 在“数组”输入框中，粘贴或输入一个有效的 JSON 数组。
- 从“谓词类型”下拉菜单中选择一个移除条件，例如“小于”、“字符串包含”或“为空值”。
- 如果所选谓词需要，在“比较值”输入框中提供用于比较的数值或字符串。
- 工具将使用 lodash 的 `_.remove` 方法执行操作，并输出移除指定元素后剩余的数组。

## 使用案例

- 数据清洗：从传感器读数列表中移除所有为 `null` 或 `undefined` 的无效记录。
- 列表过滤：在一组产品ID中，移除所有以“DEPRECATED_”开头的已下架产品ID。
- 数值筛选：处理一份成绩列表，移除所有低于60分的不及格成绩，只保留及格分数进行后续分析。

## 常见问题

### 这个工具支持哪些移除条件？

支持多种条件，包括数值比较（小于、大于、等于、不等于）、字符串匹配（包含、开头、结尾）以及状态判断（为空值、为真值、为假值）。

### 所有谓词都需要“比较值”吗？

不是。“为空值”、“为真值”、“为假值”这三类谓词不需要比较值，其他大多数谓词都需要提供一个比较值。

### 可以处理嵌套数组或对象数组吗？

工具主要针对一维数组的元素值进行判断。对于对象数组，谓词判断的是整个对象，通常需要使用“等于”或“不等于”配合完整的对象JSON作为比较值。

### 操作会修改我原来的数组吗？

不会。工具在内部处理数组的副本，最终返回的是移除元素后的新数组，您的原始输入数据保持不变。

### 如果我想撤销移除操作怎么办？

由于工具不修改原始数据，您只需重新输入或粘贴原始数组即可恢复。建议在操作前保留原始数据的备份。

## 相关工具

- [深度去重](https://elysiatools.com/zh/tools/uniq-with): 使用 lodash _.uniqWith 进行深度去重
- [数组压缩工具](https://elysiatools.com/zh/tools/compact-array): 使用 lodash _.compact 从数组中移除假值
- [删除数组前N项](https://elysiatools.com/zh/tools/drop-items): 使用lodash _.drop删除数组的前N个元素
- [从右侧删除数组元素](https://elysiatools.com/zh/tools/drop-right-items): 使用 lodash 的 _.dropRight 从数组末尾删除 N 个元素
- [移除指定值](https://elysiatools.com/zh/tools/pull-values): 使用 lodash _.pull 从数组中移除指定值
- [排序去重](https://elysiatools.com/zh/tools/sorted-unique): 使用 lodash _.sortedUniq 为排序数组去重
- [排序按字段去重](https://elysiatools.com/zh/tools/sorted-unique-by): 使用 lodash _.sortedUniqBy 为排序数组按字段去重
- [数组去重](https://elysiatools.com/zh/tools/uniq-array): 使用 lodash _.uniq 为数组去重

## 示例

- [Grafana 高级应用示例](https://elysiatools.com/zh/samples/grafana-samples): 全面的 Grafana 示例，涵盖高级仪表板设计、告警配置、数据源集成和插件开发
- [二维码示例](https://elysiatools.com/zh/samples/qrcode-samples): 用于测试二维码读取和生成工具的示例二维码图像
- [D3.js 数据可视化示例](https://elysiatools.com/zh/samples/d3js-data-visualization): 全面的D3.js数据可视化示例，包括图表、地图、动画和交互式可视化
- [Rome JavaScript 工具链示例](https://elysiatools.com/zh/samples/rome): Rome JavaScript 工具链示例，包括配置、代码检查、格式化、打包和项目管理
