在Javascript中从父对象中删除子对象

时间:2017-08-09 15:43:03

标签: javascript ecmascript-6

似乎是一项简单的任务,但我发现很难实现。 我有包含子对象的对象,在循环它们时,我想根据其中一个字段的值删除一个内部对象(该字段存在于每个内部对象中)。

循环如下:

for (let old_item of this.updated_items) {
    if (old_item['content_id'] === item.content_id) {
        this.updated_items.***DELETE***(old_item)
    }
}

我标记了缺少逻辑的位置。 如何从old_item删除this.updated_items? ES6如果可能的话..thx

2 个答案:

答案 0 :(得分:1)

您可以迭代Object#entries,当在值上找到正确的content_id时,从原始对象中删除密钥。

for (const [key, value] of Object.entries(this.updated_items)) {
    if (value.content_id === item.content_id) {
        delete this.updated_items[key];
    }
}

由于某些浏览器不支持Object#entries,另一个选项是使用Array#forEach迭代对象的键,如果找到content_id则删除原始对象中的键:

Object.keys(this.updated_items) // get the object's keys
    .forEach((key) => // iterate the keys
                this.updated_items[key].content_id === item.content_id // if the content id is similar
                && 
                delete this.updated_items[key] //delete the key from the original object
     )

答案 1 :(得分:1)

您可以在数组上使用filter函数,并使用Array.from将对象转换为数组:

this.update_items = Array.from(this.updated_items).fiter(old_item => old_item.content_id !== item.content_id)