手写lodash库里面的intersection函数

90 阅读1分钟

手写loadsh函数的第三天

 <script>
      // 自定义交集函数
      function intersection(...arr) {
        // 存储交集的结果数组
        let result = [];
        // 获取第一个数组
        const firstArray = arr[0];
        // 遍历第一个数组中的每个元素
        for (const item of firstArray) {
          // 如果结果数组中已经包含了当前元素,则跳过继续下一次循环
          if (result.includes(item)) {
            continue;
          }
          // 设置标志以指示元素是否在所有数组中都存在
          let flag = true;
          // 遍历所有输入数组
          for (let i = 0; i < arr.length; i++) {
            // 如果当前数组中不包含当前元素,则设置标志为 false 并中断循环
            if (!arr[i].includes(item)) {
              flag = false;
              break;
            }
          }
          // 如果标志为 true,则将当前元素添加到结果数组中
          if (flag) {
            result.push(item);
          }
        }
        // 返回交集的结果数组
        return result;
      }
      // 调用自定义交集函数并输出结果
      console.log(intersection([2, 1], [4, 2], [1, 2]));
    </script>