gpt4 book ai didi

javascript - Lodash 的纯 JavaScript 替换 `omit()`

转载 作者:行者123 更新时间:2023-12-04 11:55:41 33 4
gpt4 key购买 nike

我一直在寻找 Lodash omit() 的替代品仅使用 JavaScript。这就是我想要实现的目标:

function omit(obj, attr) {
// @obj: original object
// @attr: string, attribute I want to omit
// return a new object, do not modify the original object
}

到目前为止,我已经找到了这个解决方案:
let { attr, ...newObj } = obj;

但它只适用于 attr是已知的。我要 attr是动态的,所以 attr应该是一个字符串。我该怎么做?

最佳答案

_.omit() 功能支持排除多个键。该函数接受参数列表、键数组或参数和数组的组合。要保留该功能,您可以使用 rest parameters , flatten他们到 Set , 通过 Object.entries() 将对象转换为条目数组,对其进行过滤,然后使用 Object.fromEntries() 转换回对象.

function omit(obj, ...keys) {
const keysToRemove = new Set(keys.flat()); // flatten the props, and convert to a Set

return Object.fromEntries( // convert the entries back to object
Object.entries(obj) // convert the object to entries
.filter(([k]) => !keysToRemove.has(k)) // remove entries with keys that exist in the Set
);
}

console.log(omit({ foo: 'foo', bar: 'bar', baz: 'baz' }, 'bar'));
console.log(omit({ foo: 'foo', bar: 'bar', baz: 'baz' }, 'bar', 'baz'));
console.log(omit({ foo: 'foo', bar: 'bar', baz: 'baz' }, ['bar', 'baz']));
console.log(omit({ foo: 'foo', bar: 'bar', baz: 'baz' }, 'bar', ['baz']));

关于javascript - Lodash 的纯 JavaScript 替换 `omit()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58786590/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com