当前位置: 首页 > article >正文

手写一些方法

模拟new方法

function Otaku(name,age) {
    this.name = name;
    this.age = age;   
    this.habit = 'Games'
  }

  Otaku.prototype.strength = 60;
  Otaku.prototype.sayName = function () {
    console.log("I am " + this.name);
  };

  function myNew(fn, ...args) {
    const obj = Object.create(fn.prototype);
    const ret = fn.apply(obj, args); // ret有可能为null
    return typeof ret === "object" ? ret || obj : obj;
  }
  const person = myNew(Otaku,'甲',20);
  console.log(person,'person');

数组去重

  // 数组去重
  // 使用new set 
  // const uniqueArr = [...new Set(arr)];
  // const uniqueArr1 = Array.from(new Set(arr));

  // 使用reduce
  function unique(arr) {
    // 先排序,如果重复,则上一个下标的内容一样
    let sortArr = arr.sort()
    return sortArr.reduce((acc, current) => {
      if (acc[acc.length - 1] !== current) {
        acc.push(current);
      }
      return acc;
    }, [sortArr[0]]);
  }
  // let arr = [1,2,3,3,4,5,5]
  // let newArr = unique(arr);
  // console.log(newArr,'newArr');

  // 使用filter
  function unique1(arr) {
    return arr.filter((element, index, array) => {
      return array.indexOf(element) == index;
    });
  }

扁平化数组

// 使用reduce扁平化数组
  const flattenArr = (arr) => {
    return Array.isArray(arr) 
      ? arr.reduce((prev,current) => {
        return [...prev,...flattenArr(current)]
      },[]) 
      : [arr];
  }
  const newArr = flattenArr([[1,1],[2,3],12,32,[90]]);
  console.log(newArr); // [1, 1, 2, 3, 12, 32, 90]

http://www.kler.cn/a/390485.html

相关文章:

  • 73.矩阵置零 python
  • 通过Apache、Nginx限制直接访问public下的静态文件
  • 服务器数据恢复—raid5故障导致上层ORACLE无法启动的数据恢复案例
  • Spring Boot 2 学习全攻略
  • C++中线程同步与互斥的4种方式介绍、对比、场景举例
  • RuoYi Cloud项目解读【四、项目配置与启动】
  • Mac保护电池健康,延长电池使用寿命的好方法
  • 十六:Spring Boot依赖 (1)-- spring-boot-starter 依赖详解
  • 捕获抖音截图:如何用Puppeteer保存页面状态
  • linux 通过apt安装软件包时出现依赖包版本不对的问题解决
  • 我谈维纳(Wiener)复原滤波器
  • ChatGPT 通过三种方式帮助我进行学术写作
  • 编程之路,从0开始:练习篇
  • Maven最佳实践
  • 嵌入式ARM平台Linux网络实时性能优化
  • Spring Plugin与策略模式:打造动态可扩展的应用
  • 大数据技术在智慧医疗中的应用
  • 期刊论文查重率多少,才会不被认定为学术不端?
  • CSS的定位(文档流,相对定位,绝对定位,固定定位)
  • Tomcat(4) Tomcat支持哪些版本的Java?
  • PCB板材和适用场合
  • 常见的排序算法及分类对比
  • ReactPress:构建高效、灵活、可扩展的开源发布平台
  • 模块化沙箱:深信达如何为数据安全提供全方位保护
  • 数据库SQL——嵌套子查询(IN/NOT IN/SOME/ALL/EXIST/NOT EXIST)
  • 见人就说“数字化转型”,但你真的理解“转型”转的到底是什么吗