推荐答案
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 属性的新对象。