编写一个名为“select”的函数。
给定一个数组和一个对象,“select”返回一个新对象,其属性是给定对象中的属性,并且其键存在于给定数组中。
var arr = ['a', 'c', 'e'];
var obj = {
a: 1,
b: 2,
c: 3,
d: 4
};
var output = select(arr, obj);
console.log(output); // --> { a: 1, c: 3 }
我的解决方案:
function select(arr, obj) {
for (var k in obj) {
return arr.reduce((o, c) => {
if (obj.hasOwnProperty(c)) {
o[c] = obj[c]
}
return o
}, {})
}
}
var array = ['a', 'c', 'e'];
var object = {
a: 1,
b: 2,
c: 3,
d: 4
};
console.log(select(array, object));
我的解决方案可以工作,但我感觉我没有使用最佳实践或最优雅的代码。例如,我使用for/in来搜索对象,但我从来没有使用过'k'(即for(var k in obj)中的'k')。任何建议都将不胜感激。
for (var k in obj) {
。它在你的代码中完全没有作用。你能解释一下你想让它做什么吗? - Bergiobj
,因为你正在使用arr.reduce
来完成这个任务。 - evolutionxbox