复制
收藏
提问
简洁
this.dataPTR = this.dataPTR.map(item1 => { // 预先筛选和查找,避免在每个 map 调用中重复 const filteredList = resp.data.enrollChoosingDetailsAgencyList .filter(obj => obj.seniorBatch !== 0 && obj.seniorBatch !== 99); // 使用 forEach 并提前退出 item1.enrollChoosingSeniorRuleVoList.forEach((item, index) => { filteredList.forEach((item2,index)=>{ if(item1.seniorBatch === item2.seniorBatch && item1.seniorSub ===item2.seniorSub){ item.enrollCode = item2.enrollCode; item.enrollName = item2.enrollName; } }) }); // 返回新对象或原对象 return item1 });优化代码
0秒前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
优化 JavaScript 代码
- 避免重复筛选:预先筛选
resp.data.enrollChoosingDetailsAgencyList
并存储结果,避免在forEach
循环中重复筛选。2 - 简化条件判断:在
forEach
循环中,使用find
或some
方法代替嵌套的forEach
来简化条件判断。15 - 使用箭头函数特性:由于箭头函数没有自己的
this
,可以避免在回调函数中绑定this
。2
重构后的代码示例
// 预先筛选并存储结果
const filteredList = resp.data.enrollChoosingDetailsAgencyList
.filter(obj => obj.seniorBatch !== 0 && obj.seniorBatch !== 99);
// 使用 map 进行转换,并在必要时使用 find 简化条件判断
this.dataPTR = this.dataPTR.map(item1 => {
// 查找匹配的 enrollCode 和 enrollName
const matchedItem = filteredList.find(item2 =>
item1.seniorBatch === item2.seniorBatch && item1.seniorSub === item2.seniorSub
);
// 如果找到匹配项,则更新 enrollCode 和 enrollName
if (matchedItem) {
item1.enrollCode = matchedItem.enrollCode;
item1.enrollName = matchedItem.enrollName;
}
return item1;
});
此代码通过预先筛选列表并使用 find
方法简化了条件判断,提高了代码的可读性和性能。
你觉得结果怎么样?