复制
收藏
提问
简洁

this.dataPTR = this.dataPTR.map(item1 => { const matchingItem = resp.data.enrollChoosingDetailsAgencyList .filter(obj => obj.seniorBatch !==0 && obj.seniorBatch !==99 ) .find(item2 => item1.seniorBatch === item2.seniorBatch) item1.enrollChoosingSeniorRuleVoList.forEach((item,index)=>{ if(item?.seniorSub === matchingItem?.seniorSub){ item.enrollCode = matchingItem.enrollCode item.enrollName = matchingItem.enrollName } }) return matchingItem ? { ...item1, enrollCode: matchingItem.enrollCode, enrollName: matchingItem.enrollName } : item1 })优化代码

214ea5705
1个月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

优化 JavaScript 代码

  • 避免重复查找:在 map 函数中,对 resp.data.enrollChoosingDetailsAgencyListfilterfind 操作被执行多次,这可以优化以减少性能消耗。114
  • 提前退出循环:在 forEach 循环中,一旦找到匹配项,可以中断循环,避免不必要的迭代。13
  • 使用可选链:在访问 matchingItem 的属性时,使用可选链(?.)来避免在 nullundefined 上调用属性,这可以减少错误发生。19

优化后的代码示例

this.dataPTR = this.dataPTR.map(item1 => {
  // 预先筛选和查找,避免在每个 map 调用中重复
  const filteredList = resp.data.enrollChoosingDetailsAgencyList
    .filter(obj => obj.seniorBatch !== 0 && obj.seniorBatch !== 99);
  const matchingItem = filteredList.find(item2 => item1.seniorBatch === item2.seniorBatch);

  // 使用 forEach 并提前退出
  item1.enrollChoosingSeniorRuleVoList.forEach((item, index) => {
    if (matchingItem && item.seniorSub === matchingItem.seniorSub) {
      item.enrollCode = matchingItem.enrollCode;
      item.enrollName = matchingItem.enrollName;
      // 找到匹配项后退出循环
      return false; // 相当于 break
    }
  });

  // 返回新对象或原对象
  return matchingItem 
    ? { ...item1, enrollCode: matchingItem.enrollCode, enrollName: matchingItem.enrollName }
    : item1;
});

注意:优化代码时,确保逻辑正确性,并对修改后的代码进行充分测试。

你觉得结果怎么样?
如何优化JavaScript数组映射函数?
JavaScript中map方法的使用技巧
如何提高JavaScript代码的执行效率?
JavaScript数组过滤和查找性能优化
在JavaScript中如何合并对象属性?
如何使用JavaScript进行数据结构优化?

以上内容由AI搜集生成,仅供参考

在线客服