使用数组映射删除对象属性

时间:2015-06-16 16:42:52

标签: javascript arrays mongoose

我有一个对象数组。数组的每个元素都有一个我想要删除的属性。 我的代码:

        //remove the version key '__v'
        var elements = elements.map(function (element) {
            if (element.__v !== undefined) {
                delete element.__v;
                //console.log(element.__v);
            }
            return element;
        });//elements.map()
        console.log(elements);

如果我取消注释console.log(element.__v);,我会得到__v的属性值。 但是,在最终输出中,仍然包含__v属性的元素仍然存在。

1 个答案:

答案 0 :(得分:4)

这是因为你有一个Mongoose模型(假设你使用mongoose,因为版本控制的__v属性)被冻结(防止删除属性表单),你可以做的一件事是:

//remove the version key '__v'
    var elements = elements.map(function (element) {
        element = element.toJSON();
        if (element.__v !== undefined) {
            delete element.__v;
            //console.log(element.__v);
        }
        return element;
    });//elements.map()
    console.log(elements)

但这不是最佳解决方案,因为您可能会丢失许多可能已在模型上编码的功能(例如实例方法/通过.populate获取更多数据的能力等)

如果在删除属性后不需要模型功能,请使用此解决方案。