Javascript优化-从列表中找到id并将其映射到Tree



我有一个树数据,其接口定义如下:

interface IData {
id: string;
label: string; .
value: string;
expanded: boolean;
condition?: boolean;
dataState: 'SUCCESS';
locked: boolean;
enabled: boolean;
parent: string;
children: IData[];
}

我有以下界面的错误列表:-

interface IErrors {
id: string;
success: boolean;
errors: Array<IError>;
}

如果在IData[]上发现任何错误.id,我想迭代这些错误,并将"dataState"应用于"FAILED",即如果数据id与错误id列表中的数据id匹配,我将不得不将节点的"dataState"属性更改为"FAILURE"。

我已经编写了以下逻辑,但它需要2秒钟才能执行(请使用console.time进行检查(。

public setFailedDataToStatusFailed(data:IData[],errorsList:IErrors[]){
data.forEach(data => {
errorsList.forEach(error => {
if(data){
if(data.id === error.id){
data.ruleState = 'FAILURE';
return;
} else if(data.children){
this.setFailedRulesToStatusFailed(data.children,errorsList);
}
}
});
});
}

有没有办法更好地优化这个逻辑?

谢谢!

data.map(d =>   {
if(errorsList.findIndex( err => err.id === d.id )){
data.ruleState = 'FAILURE';
return;
}
if(d.children){
this.setFailedRulesToStatusFailed(data.children,errorsList);
}
})

最新更新