【问题标题】:How to remove inside array complete based on id? [duplicate]如何根据 id 删除内部数组完整? [复制]
【发布时间】:2013-03-18 19:11:57
【问题描述】:

我有这样的数组

var curChanges = [
                   {id:1, isChecked:true},
                   {id:2, isChecked:false},
                   {id:3, isChecked:true}
                 ];

现在,如果我想动态删除第二个数组,即 {id:2, isChecked:false},我该怎么做? 这里 id 是唯一的。

提前致谢。

【问题讨论】:

  • 那不可能存在。您不能在对象内部使用 = 符号。它必须是:

标签: javascript


【解决方案1】:

首先,您有语法错误。对象属性值使用: 设置,而不是=:

var curChanges = [
    {
        id: 1,
        isChecked: true
    },
    // etc...
];

假设数组中元素的顺序不固定,实现您想要做的最简单的方法是使用 ES5 Array.prototype.filter 方法:

curChanges.filter(function (elem) {
    return elem.id !== 2;
});

如果您从过滤器函数返回true,则该元素将保留在数组中。如果您返回false,它将被删除。

【讨论】:

  • 澄清一下,您必须使用curChanges = curChanges.filter(function,因为它返回一个新数组并且不会修改现有数组。
  • +1 因为正确。一个示例函数“removeElementWithId”会很好,但总的来说是合理的。 :)
【解决方案2】:

首先,无效的数组。应该是: 而不是=

这样就变成了:

var curChanges = [ {id:1, isChecked:true}, {id:2, isChecked:false}, {id:3, isChecked:true}];

使用过滤器根据id去除:

curChanges.filter(function(i) { return i.id!=2;})

或者直接去掉第二个元素:

curChanges.splice(1,1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2017-12-16
    相关资源
    最近更新 更多