手写lodash库里面的dropRightWhilet函数

48 阅读1分钟

手写loadsh函数的第二天

<script>
      const users = [
        { user: "barney", active: true },
        { user: "fred", active: false },
        { user: "pebbles", active: false },
      ];
      // 定义一个函数,用于从数组中移除满足特定条件的对象
      function dropRightWhile(arr, obj) {
        const newArr = []; // 存储满足条件的对象的新数组
        // 遍历数组中的每个对象
        arr.forEach((item) => {
          let flag = true; // 标志变量,用于判断是否满足条件
          // 遍历传入的特定对象的属性
          for (const key in obj) {
            // 检查当前对象的属性值是否与传入的对象的属性值不相等
            if (obj[key] != item[key]) {
              // 使用 != 来进行类型转换比较
              flag = false; // 如果属性值不匹配,则将标志变量设置为 false
              break; // 结束当前循环,无需继续检查其他属性
            }
          }
          // 如果标志变量仍然为 true,则将对象添加到新数组中
          if (flag) {
            newArr.push(item);
          }
        });
        return newArr; // 返回满足条件的对象组成的新数组
      }
      // 调用函数,并输出满足条件的对象数组
      console.log(dropRightWhile(users, { user: "pebbles", active: false }));
    </script>