gpt4 book ai didi

javascript - 将嵌套的对象数组过滤为对象数组

转载 作者:行者123 更新时间:2023-12-02 06:26:47 25 4
gpt4 key购买 nike

我有一个嵌套的对象数组。我如何制作一个对象数组,这个对象也从嵌套属性中获取值?如果 onClick 属性为空,则意味着有一个名为 children 的属性,父元素不应成为新列表的一部分。我需要遍历子数组并获取值。请查看下面的预期输出。

const headers = [{
title: 'Arun',
id: 'arunId',
onClick: 'onClickArun'
},
{
title: "George",
id: 'georgeId',
onClick: '',
children: [{
title: 'David',
id: 'davidId',
onClick: 'onClickDavid'
},
{
title: 'Patrick',
id: 'patrickId',
onClick: 'onClickPatrick'
}
]
},
{
title: 'Mark',
id: 'markId',
onClick: 'onClickMark'
}
];

console.log(headers.map(item => {
return {
title: item.title,
onClick: item.onClick
}
}))

预期输出:

[{
title: 'Arun',
onClick: 'onClickArun'
},
{
title: 'David',
onClick: 'onClickDavid'
},
{
title: 'Patrick',
onClick: 'onClickPatrick'
},
{
title: 'Mark',
onClick: 'onClickMark'
}
]

非常感谢任何帮助。

最佳答案

你可以拿Array#flatMap使用递归回调。

const
map = ({ title, onClick, children }) => onClick
? { title, onClick }
: children.map(map);

var headers = [{ title: 'Arun', id: 'arunId', onClick: 'onClickArun' }, { title: "George", id: 'georgeId', onClick: '', children: [{ title: 'David', id: 'davidId', onClick: 'onClickDavid' }, { title: 'Patrick', id: 'patrickId', onClick: 'onClickPatrick' }] }, { title: 'Mark', id: 'markId', onClick: 'onClickMark' }],
result = headers.flatMap(map);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将嵌套的对象数组过滤为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58466111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com