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

ECMAScript 2023

  1. 从尾到头搜索数组
    在 JavaScript 中,通过 find() 和 findIndex() 查找数组中的值是一种常见做法。不过,这些方法从数组的开始进行遍历:
    const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];array.find(elem => elem.v > 3); // {v: 4}
    array.findIndex(elem => elem.v > 3); // 3
    findLast() 会返回第一个查找到的元素,如果没有找到,就会返回 undefined;
    findLastIndex() 会返回第一个查找到的元素的索引。如果没有找到,就会返回 -1;
     const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];array.findLast(elem => elem.v > 3); // {v: 5}array.findLastIndex(elem => elem.v > 3); // 4array.findLastIndex(elem => elem.v > 5); // undefined
  2. 通过副本更改数组
    方法有4个
    Array.prototype.toReversed()
    Array.prototype.toSorted()
    Array.prototype.toSpliced()
    Array.prototype.with()

    我们知道,大多数的数组方法都是非破坏性的,也就是不会改变原数组,比如 filter() 方法
    当然,也有一些是破坏性的方法,它们在执行时会改变原数组,比如 sort() 方法
    在数组的方法中,下面的方法是具有破坏性的:
    reverse()
    sort()
    splice()

    如果想要不破坏数组,需要创建一个数组副本,对副本进行修改,因此就引入了这三个方法的非破坏性版本,因此不需要手动创建副本再进行操作了

    reverse() 的非破坏性版本:toReversed()
    sort() 非破坏性版本:toSorted(compareFn)
    splice() 非破坏性版本:toSpliced(start, deleteCount, ...items)

    除此之外,还有了一个新的非破坏性方法:with()。该方法会以非破坏性的方式替换给定 index 处的数组元素,即 arr[index]=value 的非破坏性版本。
     

    类型化数组也是数组,只不过其元素被设置为特定类型的值。类型化数组的核心就是一个名为 ArrayBuffer 的类型。每个 ArrayBuffer 对象表示的只是内存中指定的字节数,但不会指定这些字节用于保存什么类型的数据。通过 ArrayBuffer 能做的就是为了将来使用而分配一定数量的字节。
    这些方法也适用于元组,元组相当于不可变的数组。它们拥有数组的所有方法 —— 除了破坏性的方法
    toReversed() 是 reverse() 方法的非破坏性版本:

    const arr = ['a', 'b', 'c'];
    const result = arr.toReversed();
    console.log(result); // ['c', 'b', 'a']
    console.log(arr);    // ['a', 'b', 'c']

    toSorted() 是 sort() 方法的非破坏性版本:

    const arr = ['c', 'a', 'b'];
    const result = arr.toSorted();
    console.log(result);  // ['a', 'b', 'c']
    console.log(arr);     // ['c', 'a', 'b']

    splice() 方法比其他几种方法都复杂,其使用形式:splice(start, deleteCount, ...items)。该方法会从从 start 索引处开始删除 deleteCount 个元素,然后在 start 索引处开始插入 item 中的元素,最后返回已经删除的元素。
    toSpliced 是 splice() 方法的非破坏性版本,它会返回更新后的数组,原数组不会变化,并且无法再得到已经删除的元素:

    const arr = ['a', 'b', 'c', 'd'];
    const result = arr.toSpliced(1, 2, 'X');
    console.log(result); // ['a', 'X', 'd']
    console.log(arr);    // ['a', 'b', 'c', 'd']

    .with() 方法的使用形式:.with(index, value),它是 arr[index] = value 的非破坏性版本:

    const arr = ['a', 'b', 'c'];
    const result = arr.with(1, 'X');
    console.log(result);  // ['a', 'X', 'c']
    console.log(arr);     // ['a', 'b', 'c']

http://www.lryc.cn/news/141982.html

相关文章:

  • 爬虫实战之使用 Python 的 Scrapy 库开发网络爬虫详解
  • 【面试题】UDP和TCP有啥区别?
  • 字节实习后端面试总结(C++/GO)
  • linux 自动登录SSH
  • 量化:pandas基础
  • 华为云渲染实践
  • SpringBoot注解详解:从核心到Web,从数据到测试,一网打尽
  • Java寻找奇数
  • WinPlan经营大脑:精准预测,科学决策,助力企业赢得未来
  • 多数据源切换以及事务处理
  • docker 重装提示 Exising installation is up to date 解决方法
  • k8s分散部署节点之pod反亲和性(podAntiAffinity)
  • 大A的造血与吸血能力
  • 【数据库】使用ShardingSphere+Mybatis-Plus实现读写分离
  • 【第三方接口】阿里云内容审核SDK的使用
  • IDEA软件安装包分享(附安装教程)
  • 尚硅谷宋红康MySQL笔记 10-13
  • 【ag-grid-vue】基本使用
  • 学习JAVA打卡第四十四天
  • Excel通用表头及单元格合并
  • 微信小程序 自定义全局事件监听实现
  • NC65 树表型参照 搜索全部 按钮点击事件后获取sql的方法
  • 在SpringBoot使用MongoDB时出现的bug和解决
  • 前端面试相关
  • 在ubuntu上部署label-studio
  • HashSet
  • Java-继承和多态(下)
  • Docker搭建并配置Prometheus
  • “解放 Arweave“优惠:4EVERLAND的无缝上传教程
  • 系统学习Linux-LVS集群