推荐答案
function omit(obj, keys) { return Object.keys(obj).reduce((acc, key) => { if (!keys.includes(key)) { acc[key] = obj[key]; } return acc; }, {}); }
本题详细解读
题目要求
实现一个函数 omit(obj, keys)
,从对象中排除指定属性。函数接收两个参数:
obj
:原始对象。keys
:一个数组,包含需要排除的属性名。
函数应返回一个新的对象,该对象包含原始对象中除了指定属性之外的所有属性。
实现思路
- 遍历对象属性:使用
Object.keys(obj)
获取对象的所有属性名。 - 过滤属性:通过
reduce
方法遍历属性名数组,检查每个属性是否在keys
数组中。 - 构建新对象:如果属性不在
keys
数组中,则将该属性及其值添加到新对象中。 - 返回新对象:最终返回构建好的新对象。
代码解析
Object.keys(obj)
:获取对象obj
的所有属性名,返回一个数组。reduce
:遍历属性名数组,初始值为一个空对象{}
。!keys.includes(key)
:检查当前属性名key
是否不在keys
数组中。acc[key] = obj[key]
:如果属性名不在keys
数组中,则将该属性及其值添加到新对象acc
中。return acc
:返回构建好的新对象。
示例
const obj = { a: 1, b: 2, c: 3 }; const keys = ['a', 'c']; const result = omit(obj, keys); console.log(result); // 输出: { b: 2 }
在这个示例中,omit
函数排除了 obj
中的 a
和 c
属性,返回了只包含 b
属性的新对象。