javascript - JS:按值从数组中删除第一个元素
问题描述
我有一个数组:
arr = [50, 40, 50, 50];
我需要删除第一个元素,等于 50 并且不要碰另一个元素。此代码仅返回[40]
.
arr = arr.filter(function(e) {return e !== 50}) // [40]
但是我需要
arr = arr.somefunction(function(e) {return e !== 50}) // [40, 50, 50]
如果有任何帮助,我将不胜感激。
解决方案
您可以使用findIndex
和splice()
let arr = [50, 40, 50, 50];
arr.splice(arr.findIndex(a => a === 50), 1);
console.log(arr)
如果您prototype
在 Array 上需要它,那么您可以定义您的自定义方法。
function removeFirst(cb){
for(let i = 0;i<this.length;i++){
if(cb(this[i],i,this)){
return this.slice(0,i).concat(this.slice(i+1));
}
}
return this;
}
Object.defineProperty(Array.prototype,'removeFirst',{
value:removeFirst
})
let arr = [50,40,50,50];
let res = arr.removeFirst(x => x === 50);
console.log(res)
推荐阅读
- fortran - openmpi 和 gfortran 错误:没有通用“mpi_waitall”的特定子程序
- mysql - 选择用户没有任何其他活动订阅的所有订阅
- android - Android Management API 的委派范围似乎没有被 Companion 应用程序获取
- sql - 如何为具有多个名称的实体设计实体表
- java - 使用 Newton-Raphson 方法计算平方根时的循环条件
- javascript - 如何使用javascript查找内联svg中预先存在的元素的(svg)位置
- flutter - 如何创建每行有 2 个列表项的列表视图
- mysql - Spark结构化流:JDBC接收器中的主键
- .net - 如何通过代码获取当前的 Azure 服务总线命名空间连接字符串
- regex - Atom 编辑器 - 使用正则表达式用标签包装文本