仅使用对象的引用从数组中删除对象

fre*_*hie 18 javascript arrays

假设我有一个被调用的对象数组,MyArray并且某个函数返回该数组中特定元素的引用; 这样的事情:

MyArray = [Object1, Object2, ..., Objectn];

function DoWork() {

   var TheObject = GetTheObject(SomeParamter);
}
Run Code Online (Sandbox Code Playgroud)

此时,TheObject指向数组中的某个元素.假设我要删除此元素MyArray,这是否可能无需重新遍历数组以获取元素的索引?

我正在寻找像splice这样的东西,它可以用于元素的引用,而不是元素的索引.

Jon*_*Jon 35

只需使用Array.prototype.indexOf:

let index = MyArray.indexOf(TheObject);
if(index !== -1) {
  MyArray.splice(index, 1);
}
Run Code Online (Sandbox Code Playgroud)

请记住,如果目标IE <9,您需要引入一个polyfill indexOf; 你可以在MDN页面找到一个.

  • @frenchie:`indexOf`无论如何都会在所有浏览器中重新循环.我并不是故意建议以某种方式确定指数是凭空捏造的. (2认同)