手写lodash里面的findIndex库函数

58 阅读1分钟

手写loadsh函数的第二天

<script>
      var users = [
        { user: "barney", active: false },
        { user: "fred", active: false },
        { user: "pebbles", active: true },
      ];

      // 定义一个函数用于查找对象在数组中的索引
      function findIndex(array, obj) {
        let i; // 存储找到的索引值
        if (Array.isArray(obj)) {
          // 如果传入的 obj 是数组
          array.some((item, index) => {
            for (const key in item) {
              if (key == obj[0] && item[key] == obj[1]) {
                i = index; // 将找到的索引赋值给 i
                return true; // 终止循环
              }
            }
          });
        } else if (typeof obj == "string") {
          // 如果传入的 obj 是字符串
          array.some((item, index) => {
            for (const key in item) {
              if (key == obj) {
                i = index; // 将找到的索引赋值给 i
                return true; // 终止循环
              }
            }
          });
        } else {
          // 如果传入的 obj 是对象
          array.forEach((item, index) => {
            let flag = true; // 标记是否匹配所有属性
            for (const key in item) {
              if (obj[key] != item[key]) {
                flag = false; // 如果属性值不匹配,标记为 false
                break; // 跳出循环
              }
            }
            if (flag) {
              i = index; // 如果所有属性匹配,将索引赋值给 i
            }
          });
        }
        return i; // 返回找到的索引值
      }
      console.log(findIndex(users, "active")); // 输出属性为 "active" 的对象在数组中的索引
    </script>