Javascript 如何省略嵌套对象属性

Javascript 如何省略嵌套对象属性,javascript,ecmascript-6,Javascript,Ecmascript 6,从该数组中删除notneeded属性的最佳方法是什么 function apiCall(...args) { //at this point I need to remove 'notneeded' property from args }; apiCall({a: 'one', b: 'two'}, {notneeded: '', c: 'three'}, 'hello'); 传递的对象可以是原语、函数等,因此理想情况下,解决方案可以处理每种情况 我已经为这个问题创建了以下函数,但我确

从该数组中删除
notneeded
属性的最佳方法是什么

function apiCall(...args) {
  //at this point I need to remove 'notneeded' property from args
};

apiCall({a: 'one', b: 'two'}, {notneeded: '', c: 'three'}, 'hello');
传递的对象可以是原语、函数等,因此理想情况下,解决方案可以处理每种情况

我已经为这个问题创建了以下函数,但我确信有更好的解决方案(可能使用新的ECMA标准)

函数省略(参数,省略键){
让省略=[];
for(设i=0;i{
如果(键!==忽略键){
结果[key]=args[i][key];
}
返回结果;
}, {}),
);
}否则{
省略。推(args[i]);
}
}
省略返回;
}

不要将数组迭代混合到该方法中。让它只做一项任务

function omit(obj, keyToOmit) {
    if (typeof obj != "object") return obj;
    const result = {};
    for (const key in obj) {
        if (key != keyToOmit) {
            result[key] = obj[key];
        }
    }
    return result;
}

function apiCall(...args) {
    args = args.map(arg => omit(arg, "notneeded"));
    …
}

它是“notneeded”还是“activelyhabious”?@Bergi嗯,在这个特殊的例子中,它后来作为后端请求的一部分被传递并导致异常,所以是的,你可以称它为“activelyhabious”:)我投票结束这个问题,因为它要求进行代码审查(因此太广泛/基于观点)。它可能会被调整为主题。找到它的索引并拼接它。
function omit(obj, keyToOmit) {
    if (typeof obj != "object") return obj;
    const result = {};
    for (const key in obj) {
        if (key != keyToOmit) {
            result[key] = obj[key];
        }
    }
    return result;
}

function apiCall(...args) {
    args = args.map(arg => omit(arg, "notneeded"));
    …
}