das*_*kel -1 javascript arrays filtering find javascript-objects
有很多关于过滤对象数组的问题,但我无法以另一种方式进行;一个内部有数组的对象。
所需的输出是一个带有结果的数组。在这种情况下,他的爱好列表中包含“瑜伽”的人的名字是约翰。
这是示例:
function findHobbyists(hobbies, hobby) {
return [];
}
var hobbies = {
"John": ['Piano', 'Puzzles', 'Yoga'],
"Adam": ['Drama', 'Fashion', 'Pets'],
"Mary": ['Magic', 'Pets', 'Reading']
};
console.log(findHobbyists(hobbies, 'Yoga'));
Run Code Online (Sandbox Code Playgroud)
免责声明,这是测试的一部分,我正在寻找解决此问题的正确方法以供将来参考。
这是我迄今为止尝试过的。我知道这是错误的;
function findHobbyists(hobbies, hobby) {
var res = []
for (var key in hobbies) {
if (hobbies.hasOwnProperty(key)) {
if (hobbies[key].filter(item => item == hobby)) {
res.push(hobbies[key])
}
}
}
return res;
}
var hobbies = {
"John": ['Piano', 'Puzzles', 'Yoga'],
"Adam": ['Drama', 'Fashion', 'Pets'],
"Mary": ['Magic', 'Pets', 'Reading']
};
console.log(findHobbyists(hobbies, 'Yoga'));
Run Code Online (Sandbox Code Playgroud)
您可以获取密钥并对其进行过滤。
function findHobbyists(hobbies, hobby) {
return Object.keys(hobbies).filter(k => hobbies[k].includes(hobby));
}
var hobbies = { John: ['Piano', 'Puzzles', 'Yoga'], Adam: ['Drama', 'Fashion', 'Pets'], Mary: ['Magic', 'Pets', 'Reading'] };
console.log(findHobbyists(hobbies, 'Yoga'));Run Code Online (Sandbox Code Playgroud)