练手

36 阅读1分钟
let arr = [2, 9, 6, 7, 4, 3, 1, 7, 0, -1, -2];
// Symbol("description") 是一种用于表示任意精度整数的数据类型,可以安全地存储和操作超出 Number 类型安全限制的大整数(大于 2^53 - 1 或小于 -2^53 + 1)
// BigInt("123")Symbol 是一种唯一且不可变的数据类型,通常用作对象属性的键(避免命名冲突)

const dataType = (value) => {
  return Object.prototype.toString.call(value).match(/\[object (\w+)\]/)[1];
};
const forMap = (callBack, args) => {
  const result = [];
  if (dataType(args) === "Array") {
    for (let i = 0; i < args.length; i++) {
      if (callBack(args[i], i)) {
        result.push(args[i]);
      }
    }
  }
  if (dataType(args) === "Object") {
    for (const key in args) {
      if (args.hasOwnProperty(key) && callBack(args[key], key)) {
        result.push(args[key], key);
      }
    }
  }
  return result;
};

// 便利对象
// const obj = { name: "lily", age: "20" };
// forMap((item, key) => {
//   console.log("key::: ", key);
//   console.log("item::: ", item);
// }, obj);

const sort = (args) => {
  if (dataType(args) === "Array") {
    const a = forMap((item, index) => {
      return item === 2;
    }, args);
    console.log(a);
  }
};
sort(arr);
// console.log("arr::: ", arr);