从对象中删除键的优化方法是什么?

What could be an optimized way of deleting keys from an object?

我有一个从 JSON 对象或 objects.Below 数组中删除多个键的用例是我的 code.If 有人对此有更优化的方法然后建议。

       exports.removeAttributes = function (arrayOfAttributesToRemove, object, callback) {
    let checkForRemoveOrRetain = true;
    removeORRetain(arrayOfAttributesToRemove, object, checkForRemoveOrRetain, (err, object) => {
        if (err) {
            callback(err);
        } else {
            callback( object);
        }
    });
};
exports.retainAttributes = function (arrayOfAttributesToRetain, object, callback) {
    let checkForRemoveOrRetain = false;
    removeORRetain(arrayOfAttributesToRemove, object, checkForRemoveOrRetain, (err, object) => {
        if (err) {
            callback(err);
        } else {
            callback(object);
        }
    });
}

    let removeORRetain = function (arrayOfAttributesToRemove, object, checkForRemoveOrRetain, callback) {
    if (Array.isArray(object)) {
        for (let i = 0; i < object.length; i++) {
            for (let key in object[i]) {
                if (arrayOfAttributesToRemove.includes(key) === checkForRemoveOrRetain) {
                    delete object[i][key];
                }
            }
        }
        callback(object);
    } else {
        for (let key in object) {
            if (arrayOfAttributesToRemove.includes(key) === checkForRemoveOrRetain) {
                delete object[key];
            }
        }
        callback( object);
    }
}; 

你可以很容易地用 lodash 做到这一点。


const _ = require('lodash');

exports.removeAttributes = function (arrayOfAttributesToRemove, object, callback) {
   // check for errors etc. Then

   // Create an array of objects if not already.
   const arr = _.concat([], object);
   // call callback with new arr with omitted properties using _.map and _.omit
   callback(null, _.map(arr, e => _.omit(e, arrayOfAttributesToRemove)));
};

如果您想保留属性,请使用 _.pick