我想返回一个只包含通过数组传递的键的对象,
const arr = ['a', 'b', 'c', 'd', 'e']
还有一个物体,
const obj = {
a: {
name: 'a',
capital: 'A'
},
g: {
name: 'g',
capital: 'G'
},
b: {
name: 'b',
capital: 'B'
},
m: {
c: {
name: 'c',
capital: 'C'
}
},
z: {
name: 'z',
capital: 'Z'
},
n: {
e: {
name: 'e',
capital: 'E'
}
},
o: {
f: {
d: {
name: 'd',
capital: 'D'
}
}
}
}
现在我想返回一个对象,它只包含arr
'a', 'b', 'c', 'd' and 'e'
中的键,所以我的结果对象是,
{
a: {
name: 'a',
capital: 'A'
},
b: {
name: 'b',
capital: 'B'
},
c: {
name: 'c',
capital: 'C'
},
e: {
name: 'e',
capital: 'E'
},
d: {
name: 'd',
capital: 'D'
}
}
Approach:
我正在接近它,如下所示,但没有得到预期的结果,
function fetchValueByKey(object, key, result) {
if(typeof object !== 'object')
return result;
for(let objKey in object) {
if(key.indexOf(objKey) > -1) {
result[objKey] = object[objKey];
console.log(result);
} else {
result[objKey] = fetchValueByKey(object[objKey], key, result);
console.log(result)
}
}
}
console.log(fetchValueByKey(obj, arr, {}));
请建议我如何做到这一点?