我有以下代码和测试数据:
const getNestedObject = (nestedObj, pathArr) => {
return pathArr.reduce((obj, key) => {
return (obj && obj[key] !== 'undefined') ? obj[key] : undefined, nestedObj;
});
}
const obj =
[
{
a: 1,
c: [
{
d: 1,
e: 'string',
f: [
{
value: 0,
},
{
value: 1,
}
],
},
],
},
{
a: 2,
c: [
{
d: 2,
e: 'string',
f: [
{
value: 3,
},
{
value: 4,
}
],
},
],
},
];
console.log(obj);
const fs = obj.map(o => getNestedObject(o, ['c', 'f']));
console.log(fs);
我想要做的是,给定下面显示的对象数组,我想从每个对象中仅获取名为
f
的属性。因此,最终结果应该是每个对象的f
值的数组。由于'f'是一个数组,我希望最终结果是一个只包含所有'f'属性元素的数组,类似于这些'f'被展开成一个数组。我的上面的getNestedObject
函数似乎不起作用,因为当下面的console.log
语句返回整个对象时。有什么办法可以在JS中实现这一点吗?所以基本上最终结果应该是:
[{ value: 0 }, { value: 1 }, { value: 3 }, {value: 4 }]
f
在我的情况下始终是一个数组,但是为了论证起见,我们应该只获取f
的第一次出现。 - tinker