【发布时间】:2018-02-06 21:47:14
【问题描述】:
编写一个名为“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 来搜索对象,但我从不使用 for (var k in obj) 中的“k”。任何提示将不胜感激。
【问题讨论】:
-
是的,只需省略
for (var k in obj) {。它在您的代码中绝对没有任何用途。你能解释一下你的意思吗? -
我想搜索对象@Bergi的每个属性
-
@jhazelton1 你不需要遍历
obj,因为你正在使用arr.reduce来做到这一点。 -
并且您将在第一次迭代中返回,因此无论哪种方式都不会查找对象的所有属性
标签: javascript arrays object for-in-loop