推荐答案
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 }
。