Javascript:在对对象的函数调用时从数组中删除对象

标签 javascript

不太确定如何表达这个问题(我确信以前已经以某种形式问过这个问题)。

我的问题本质上如下所示(通过一些写得很糟糕的伪 JavaScript 代码):

var list = []
for (i to somenumber)
    list.push(new myObject);

list.foreach(function(item){
    if (item.name === 'WhatIAmLookingFor')
        item.delete() <--- This needs to remove the object from list
}

因此,正如我令人惊叹的代码所暗示的那样,我希望能够通过调用列表中对象的函数来从列表中删除该项目。

抱歉,如果这是一个无知的问题,但我不知道如何做到这一点。

最佳答案

不要删除项目,而是使用过滤器仅保留“好的”项目。

var list = [
  { name: 'foo' },
  { name: 'bar' },  
  { name: 'removeMe' },  
  { name: 'baz' }
];

list = list.filter(function(item) {
  return item.name != 'removeMe'
});

document.write(JSON.stringify(list))

“从内到外”删除元素,例如element.removeFrom(list),您需要array.splice:

obj = function(name) {
  
  this.name = name;
  
  this.removeFrom = function(lst) {
    for (var i = 0; i < lst.length; ) {
    	if (lst[i].name == this.name)
          lst.splice(i, 1);
        else
          i++;
    }
  }
}
  
a = new obj('a');
b = new obj('b');
c = new obj('c');
x = new obj('remove');

list = [a, b, c, x, x, a, b, c, x]

x.removeFrom(list)

document.write(JSON.stringify(list))

关于Javascript:在对对象的函数调用时从数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25916490/

相关文章:

javascript - 从伪装成外部脚本的字符串中注入(inject) Javascript 代码

javascript - jQuery 错误 - 将事件从 iframe 绑定(bind)到 parent.window

javascript - 带有包含表单的 Bootstrap 模态视图的 Rails 应用程序,提交和消失模态视图而无需重新加载页面

javascript - 如何访问 EXT JS 网格单元中存在的控件,如复选框、组合框、文本框等

javascript - 如何将 Express JS 应用程序连接到 github API

javascript - 给出给定字符串数组所需的最小笔画的函数

javascript - Oracle Apex JavaScript 问题

javascript - 如何控制 Angular-UI Bootstrap 弹出窗口的确切位置

javascript - 效率 : one event handler or multiple

javascript - 如何从 php 返回 php 变量值以及 html 响应 ajax