当前位置: 首页 > 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

相关文章:

  • mac终端使用pytest执行iOS UI自动化测试方法
  • Openstack7--安装消息队列服务RabbitMQ
  • IEC60870-5-104 协议源码架构详细分析
  • Mit6.S081-实验环境搭建
  • 【p2p、分布式,区块链笔记 DAM】GUN/SEA(Security, Encryption, Authorization) 模块genkey
  • 从0开始学PHP面向对象内容之(常用魔术方法续一)
  • 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)
  • 见人就说“数字化转型”,但你真的理解“转型”转的到底是什么吗