西门子828d授权密钥破解经验分享 I7I54833762

操作数组的方法

Array.prototype.toSorted(compareFn) //返回一个新数组,其中元素按升序排序,而不改变原始数组。

Array.prototype.toReversed() //返回一个新数组,该数组的元素顺序被反转,但不改变原始数组。

Array.prototype.toSpliced(start,deleteCount,item1...,itemN) //返回一个新数组,在给定索引处删除和/或替换了一些元素,而不改变原始数组。

新增的这三个数组方法分别对标以下原有的以下三个方法,它们与原先方法的区别就是:执行它们并不会影响原先的数组

Array.prototype.sort(compareFn)

Array.prototype.reverse()

Array.prototype.splice(start,deleteCount,item1...,itemN)

toSorted

compareFn:指定一个定义排序顺序的函数。如果省略,则将数组元素转换为字符串,然后根据每个字符的 Unicode 码位值进行排序。

compareFn(a, b) 返回值 排序顺序

> 0 a 在 b 后,如 [b, a]

< 0 a 在 b 前,如 [a, b]

=== 0 保持 a 和 b 原来的顺序

const arr = [5,7,8,61,24,32,42,35]

//不传入参数

const sortArr1 = arr.toSorted()

//传入箭头函数 a:比较的第一个元素,b:比较的第二个元素

const sortArr2 = arr.toSorted((a,b)=>a-b)

console.log(arr) //[5, 7, 8, 61, 24, 32, 42, 35]

console.log(sortArr1) //[24, 32, 35, 42, 5, 61, 7, 8]

console.log(sortArr2) //[5, 7, 8, 24, 32, 35, 42, 61]

toReversed

const arr = [5,7,8,61,24,32,42,35]

const reverseArr = arr.toReversed()

console.log(arr) //[5, 7, 8, 61, 24, 32, 42, 35]

console.log(reverseArr) //[35, 42, 32, 24, 61, 8, 7, 5]

toSpliced

start

从 0 开始计算的索引,表示要开始改变数组的位置,它会被转换为整数。

如果 start < 0,则从数组末尾开始计数,使用 start + array.length。

如果 start < -array.length 或者省略了 start,则使用 0。

如果 start >= array.length,不会删除任何元素,但该方法将表现为添加元素的函数,添加提供的所有元素。

deleteCount 可选

一个整数,指示数组中要从 start 删除的元素数量。

如果 deleteCount 被省略了,或者如果它的值大于或等于由 start 指定的位置到数组末尾的元素数量,将会删除从 start 到数组末尾的所有元素。但是,如果你想要传递任何 itemN 参数,则应向 deleteCount 传递 Infinity 值,以删除 start 之后的所有元素,因为显式的 undefined 会转换为 0。

如果 deleteCount 是 0 或者负数,则不会删除元素。在这种情况下,你应该指定至少一个新元素(见下文)。

item1, ..., itemN 可选

元素将从 start 开始添加到数组当中。

如果你没有指定任何元素,toSpliced() 只会从数组中删除元素。

const arr = [5,7,8,61,24,32,42,35]

//插入元素

const insertArr = arr.toSpliced(0,0,7)

//删除元素

const deleteArr = arr.toSpliced(0,1)

//替换元素

const replaceArr = arr.toSpliced(0,1,7)

console.log(arr) //[5, 7, 8, 61, 24, 32, 42, 35]

console.log(insertArr) //[7, 5, 7, 8, 61, 24, 32, 42, 35]

console.log(deleteArr) //[7, 8, 61, 24, 32, 42, 35]

console.log(replaceArr) //[7, 7, 8, 61, 24, 32, 42, 35]

浏览器兼容性

操作数组方法

查找数组元素的方法

Array.prototype.findLast(compareFn) //方法反向迭代数组,并返回满足提供的测试函数的第一个元素的值。如果没有找到对应元素,则返回 undefined。

Array.prototype.findLastIndex() //方法反向迭代数组,并返回满足提供的测试函数的第一个元素的下标索引。如果没有找到对应元素,则返回 undefined。

callbackFn

数组中测试元素的函数。回调应该返回一个真值,表示已找到匹配的元素,否则返回一个假值。函数在被调用时会传递以下参数:

element

当前遍历到的元素。

index

当前遍历到的元素的索引(位置)。

array

调用 findLast() 的数组本身。

findLast

const arr = [5,7,8,61,24,32,42,35]

console.log(arr.findLast(a=>a === 5))

findLastIndex

const arr = [5,7,8,61,24,5,32,42,35]

console.log(arr.findIndex(a=>a === 5)) //0

console.log(arr.findLastIndex(a=>a === 5)) //5

浏览器兼容性

数组查找方法

二、WeakMap支持键值类型新增

新增Sybmol类型来作为WeakMap的Key,助于对象被垃圾收集

const symbol= Symbol('foo')

const weakMap = new WeakMap()

weakMap.set(symbol,51)

weakMap.get(symbol) //51

浏览器兼容性

symbol01

symbol02

三、Hashbang 语法

Hashbang 注释是一种特殊的注释语法,其行为与单行注释 (//) 完全一样,只是它以 #! 开头,并且只在脚本或模块的最开始处有效。注意,#! 标志之前不能有任何空白字符。注释由 #! 之后的所有字符组成直到第一行的末尾;只允许有一条这样的注释。JavaScript 中的 hashbang 注释类似于 Unix 中的 shebang,它提供了一个特定的 JavaScript 解释器的路径,用它来执行这个脚本。

// 写在脚本文件第一行

#!/usr/bin/env node

'use strict';

console.log(1);

// 写在模块文件第一行

#!/usr/bin/env node

export {};

console.log(1);

这样就可以直接运行脚本代码了

以前执行脚本

node demo.js

有了 hashbang 之后执行脚本

./demo.js

只有当脚本直接在 shell 中运行时,Hashbang 语法才有语意意义,其他环境下 JavaScript 解释器会把它视为普通注释。

相关推荐
中微子43 分钟前
🔥 React Context 面试必考!从源码到实战的完整攻略 | 99%的人都不知道的性能陷阱
前端·react.js
秋田君1 小时前
深入理解JavaScript设计模式之命令模式
javascript·设计模式·命令模式
中微子2 小时前
React 状态管理 源码深度解析
前端·react.js
百锦再2 小时前
详细解析 .NET 依赖注入的三种生命周期模式
java·开发语言·.net·di·注入·模式·依赖
风吹落叶花飘荡3 小时前
2025 Next.js项目提前编译并在服务器
服务器·开发语言·javascript
加减法原则3 小时前
Vue3 组合式函数:让你的代码复用如丝般顺滑
前端·vue.js
失败又激情的man3 小时前
python之requests库解析
开发语言·爬虫·python
yanlele3 小时前
我用爬虫抓取了 25 年 6 月掘金热门面试文章
前端·javascript·面试
lichenyang4533 小时前
React移动端开发项目优化
前端·react.js·前端框架
你的人类朋友3 小时前
🍃Kubernetes(k8s)核心概念一览
前端·后端·自动化运维