假设我的结构如下所示。
[{
name: 'Prepare the ingredients',
steps: [{
name: 'Cut tomatoes',
steps: [{
name: 'Peel tomatoes',
}, {
name: 'Dice tomatoes',
}]
}]
}, {
name: 'Sautee vegetables',
steps: [{
name: 'Put two table spoons of olive oil in pan',
}]
}]
我将current
的引用存储在数据库中,并在每一步中递增它。
第一个步骤被定义为找不到子项的第一步。在这种情况下,它将是{ name: 'Peel tomatoes' }
。下一步是{ name: 'Dice Tomatoes' }
。
我找不到按索引查找的方法有点麻烦。我发现管理它的唯一方法是展平整个结构然后获取索引。我想返回步骤并引用它的父元素。
_flatten(steps, parent) {
for (let index=0; index<steps.length; index++) {
if (steps[index].steps instanceof Array) {
this.steps.push(this._flatten(steps[index].steps, steps[index]));
}
this.steps.push(new Step(steps[index], parent));
}
}
let data = Schedule.findOne({}, { sort: { createdAt: -1 } }) // most recent schedule.
_flatten(data.steps)[data.metadata.steps.current];
有没有合适的方法来优化它,而不是在每次搜索时展平整个结构?
答案 0 :(得分:1)
只使用嵌套引用,即索引数组。你可以用它来平凡地遍历你的结构,也可以做增量,而不需要弄平整个事物。