我有一个树数据,其接口定义如下:
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);
}
})