推荐答案
function pick(obj, keys) {
return keys.reduce((acc, key) => {
if (obj.hasOwnProperty(key)) {
acc[key] = obj[key];
}
return acc;
}, {});
}本题详细解读
题目要求
实现一个函数 pick(obj, keys),从对象 obj 中选取指定属性 keys,并返回一个新的对象,该对象只包含 keys 中指定的属性。
代码解析
参数说明:
obj:源对象,从中选取属性。keys:一个数组,包含需要从obj中选取的属性名。
实现思路:
- 使用
reduce方法遍历keys数组。 - 对于每个
key,检查obj是否拥有该属性(使用hasOwnProperty方法)。 - 如果
obj拥有该属性,则将该属性及其值添加到累加器对象acc中。 - 最后返回累加器对象
acc。
- 使用
代码细节:
reduce方法的初始值是一个空对象{},用于存储最终的结果。hasOwnProperty方法用于确保只选取obj自身的属性,而不包括原型链上的属性。
示例
const obj = { a: 1, b: 2, c: 3 };
const keys = ['a', 'c'];
const result = pick(obj, keys);
console.log(result); // 输出: { a: 1, c: 3 }在这个示例中,pick 函数从 obj 中选取了 a 和 c 两个属性,并返回了一个新的对象 { a: 1, c: 3 }。