这段代码有简化写法吗?

//比较两个树形数组
 const isCheckByProduct = (arr1, arr2) => {
    if (!arr2) return arr1;
    arr1?.forEach((item) => {
      arr2.forEach((check) => {
        if (item.skus && item.skus?.length > 0) {
          // 如果item有skus
          if (item.id === check.id && item.skus?.length === check.skus?.length) {
            item.disabled = true;
            isCheckByProduct(item.skus, check.skus);
          } else {
            isCheckByProduct(item.skus, check.skus);
          }
        } else {
          if (item.id === check.id) {
            item.disabled = true;
          }
        }
      });
    });
    return arr1;
  };

请使用代码块功能

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/259237
  • 这篇博客也不错, 你可以看下你能保证你的代码没有异常吗?
  • 除此之外, 这篇博客: 函数调用不添加括号代表什么?中的 回调函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 回调函数的具体定义比较拗口,比较难以理解,因此比较生动的例子就是:小明到小红店里去购物,但是小红家恰好没货,因此小明留下了联系方式,等进货之后联系小明来购物

    更加清晰的解释为:如果将函数指针作为参数被传递到函数中,当这个函数指针被用于调用其指向的函数时,我们就称这个函数为回调函数

    回调函数的主要优势是解耦,即调用者和被调用者被分开,调用者无需了解谁是被调用者,它只需知道如果满足某条件之后,函数将被调用