从此数组中删除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标准)。
function omit(args, omitKey) {
let omitted = [];
for (let i = 0; i < args.length; i++) {
if (typeof args[i] === 'object') {
omitted.push(
Object.keys(args[i]).reduce((result, key) => {
if (key !== omitKey) {
result[key] = args[i][key];
}
return result;
}, {}),
);
} else {
omitted.push(args[i]);
}
}
return omitted;
}
答案 0 :(得分:0)
不要将数组迭代混入该方法中。使其仅执行一项任务。
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"));
…
}