javascript - 如何仅过滤数组中的 1 个匹配元素
问题描述
我有 2 个苹果。过滤方法删除所有苹果。有没有办法只删除其中一个。
var box = ['banana', 'apple', 'apple']
我期待的输出:
box.filter((a) => a !== 'apple') => ['banana', 'apple']
解决方案
没有内置的,没有。你可以记住你是否看过它并总是在true
之后返回:
const box = ["banana", "apple", "apple"];
let seenApple = false;
const filtered = box.filter((a) => {
if (seenApple) {
return true;
}
seenApple = a === "apple";
return !seenApple;
});
console.log(filtered);
或者,您可以找到第一个的索引apple
:
const appleIndex = box.findIndex(a => a === "apple");
...然后filter
通过该索引:
const filtered = box.filter((entry, index) => index !== appleIndex);
...或用于splice
就地修改数组。
推荐阅读
- python - 按钮未在主图像显示器中设置图像单击 kivy 中的图像按钮
- python - 我想通过 Python 中的列表 Comprehensions 列出字典中的所有键
- wordpress - Traefik 2 可以路由到 VPS 上的内部 docker 容器和完全外部的域吗?
- python - 在一行(行)中从左到右排序轮廓,然后在第二行从左到右排序
- c# - 如何在 ASP.net 核心运行时更新 HttpClient 基地址
- javascript - 设置焦点后如何让光标进入输入框?
- slack - 使用 Slack API 向 Slack 上的任何用户发送消息
- bash - 错误/非法格式或缺少 URL - 在自定义 curl 中传递变量值
- java - 发送链接以验证用户注册
- java - 线程“main”java.lang.NumberFormatException 中的异常:对于非空或空的输入字符串