object/omit.jsjavascript
/**
* 创建一个排除指定顶层属性的新对象。
* @function omit
* @memberof module:object
* @param {Object} object 原对象
* @param {string[]} keys 要排除的属性名
* @returns {Object} 新对象,不修改原对象
* @throws {TypeError} 参数类型不正确时抛出
*/
function omit(object, keys) {
if (object === null || typeof object !== 'object') throw new TypeError('object must be an object')
if (!Array.isArray(keys) || keys.some(key => typeof key !== 'string')) throw new TypeError('keys must be a string array')
const excluded = new Set(keys)
return Object.fromEntries(Object.entries(object).filter(([key]) => !excluded.has(key)))
}
export default omit