javascript - JS : delete first element from array by value

标签 javascript arrays filter

我有一个数组:

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]

如有任何帮助,我将不胜感激。

最佳答案

您可以使用findIndexsplice()

let arr = [50, 40, 50, 50];
arr.splice(arr.findIndex(a => a === 50), 1);
console.log(arr)

如果您在 Array 的 prototype 上需要它,那么您可以定义您的自定义方法。

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)

关于javascript - JS : delete first element from array by value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56365514/

相关文章:

javascript - 变量赋值中操作数的说明

javascript - 为什么 push() 在循环中不起作用?

jquery 如果 url 第一个路径名与 href 匹配,则

javascript - 从对象生成哈希

javascript - 显示无的 div 中的 Canvas 不起作用

javascript - 在 Node.js 中使用 TypeScript

arrays - 从 mongodb 中的对象数组中删除 id

c++ - 请求 ''中的成员 '',非类类型

javascript - 在JS中过滤另一个数组中的对象数组

google-apps-script - 如何从过滤器中自动选择范围而无需手动输入?