我有一个对象数组,其中可以包含相同类型的对象子级,就像这样:
var exampleArray = [
{
alias: 'alias1',
children: [
{
alias: 'child1'
},
{
alias: 'child2',
children: [
{
alias: 'child4'
},
{
alias: 'child5'
}
]
},
{
alias: 'child3'
}
]
},
{
alias: 'alias2'
},
{
alias: 'alias3',
children: [
{
alias: 'child6'
},
{
alias: 'child7'
}
]
}
];
基础对象还有其他属性,但它们对于当前问题并不重要。现在,让我们假设对象可以是:
{
alias: 'string',
children: []
}
孩子们是可选的。
我正在寻找管理像这样的对象的最佳方法/最快方法。我已经创建了一些递归方法来执行我想要的一些操作,但我想知道是否有更好的方法来完成以下任务:
- hasAlias(arr,alias)-我需要确定整个对象是否包含具有给定别名的任何对象。
目前,我使用递归来实现,但考虑到这个数组可以有限地增长,递归方法最终会达到堆栈限制。
getParent(arr,alias)-我需要能够获得包含具有给定别名的元素的父级。鉴于别名对整个数组是唯一的,永远不会有两个相同的别名。 我现在也是递归做这个,但我想找到更好的方法。
deleteObject(arr,alias)-我现在不确定如何完成此操作。我需要能够传递一个数组和一个别名,并将该对象(及其所有子项)从给定数组中删除。我开始了一个递归方法来做到这一点,但停止并决定在这里发布。
我正在使用Node.js,并且有lodash可用于更快地处理事务。 对于像这样的大规模数组,我仍然是相对较新的JavaScript用户,因此不确定有没有更好的方法来处理。
hasAlias
可以使用类似于JSON.stringify(arr).indexOf('alias')
的东西来完成。 - adeneo