[英]convert array of objects to array of string using typescript or javascript
Model:模型:
export interface FeedNode {
name: string;
children?: FeedNode[];
}
Data:数据:
const dataArray: FeedNode[] = [
{
name: 'FEEDS',
children: [
{ name: 'Pink Vila' },
{ name: 'Dainik bhaskar' },
{ name: 'TOI' },
],
},
{
name: 'BOARDS',
children: [
{
name: 'Top Stories',
children: [{ name: 'Sports' }, { name: 'Politics' }],
},
{
name: 'Interests',
children: [{ name: 'Health' }, { name: 'Entertainment' }],
},
],
}]
My requirement is to get all the names as an array of string based on the parent name eg我的要求是根据父名称将所有名称作为字符串数组获取,例如
if dataArray.name == 'FEEDS'. expected result = ['Pink Vila','Dainik bhaskar', 'TOI'].
Similarily同样
if dataArray.name == 'BOARDS' expected result = ['Top Stories', Sports', 'Politics', 'Interests', 'Health','Entertainment']
I tried dataArray.filter((feedData) => feedData.name === 'FEEDS').map((childData) => childData.children).map((data) => data.name);
我试过
dataArray.filter((feedData) => feedData.name === 'FEEDS').map((childData) => childData.children).map((data) => data.name);
However, this failing with error 'Property 'name' does not exist on the type 'FeedNode[]' and the result is undefined.但是,此失败并显示错误 'Property 'name' 在类型 'FeedNode[]' 上不存在并且结果未定义。
interface FeedNode {
name: string
children?: FeedNode[]
}
const dataArray: FeedNode[] = [
{
name: 'FEEDS',
children: [
{ name: 'Pink Vila' },
{ name: 'Dainik bhaskar' },
{ name: 'TOI' },
],
},
{
name: 'BOARDS',
children: [
{
name: 'Top Stories',
children: [{ name: 'Sports' }, { name: 'Politics' }],
},
{
name: 'Interests',
children: [{ name: 'Health' }, { name: 'Entertainment' }],
},
],
},
]
function getChildren(dataArray: FeedNode[], name: string): string[] {
// find the data object with given name
const data = dataArray.find(data => data.name === name)
if (!data) return []
let result: string[] = []
function _getChildren(data: FeedNode) {
const children = data.children
if (!children) return
children.forEach(c => {
result.push(c.name) // push this child's name and then its children (DFS)
_getChildren(c)
})
}
_getChildren(data)
return result
}
console.log(getChildren(dataArray, 'FEEDS')) // expected
console.log(getChildren(dataArray, 'BOARDS')) // expected
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.