运算符展开、函数,对象,数组,字符串变化 集合

... 展开运算符 用于函数实参或者赋值号右边

 console.log(...[1, 2, 3]) // 1,2,3console.log(Math.max(...[1, 2, 3]))//3   console.log(Math.max.apply(null, [1, 2, 3]))//3const o = { a: 1, b: 2 }const obj = { ...o, c: 3 }console.log(obj)//Object

... 剩余运算符 用于赋值号左边或函数形参

 const [a, ...args] = [1, 2, 3, 4]console.log(args) // [2,3,4]const fn = (...args) => {console.log(args)let sum = 0args.forEach((item) => {sum += item})return sum}console.log(fn(1))//1console.log(fn(1, 2))//3console.log(fn(1, 2, 3))//6

 函数参数默认值

function fn(a = 0, b = 0) {return a + b}console.log(fn())//0console.log(fn.name)//fn

对象变化

当对象的属性名和值的变量名或常量名一样 可以省略冒号+变量名

const username = 'admin'const pwd = '123456'const obj = {username, // username:usernamepwd,say() {console.log('say')//say},say1: () => {},}console.log(obj)//objectobj.say()const o = Object.create(obj) // o.__proto__ = objo.a = 100console.log(o.username)//adminconsole.log(NaN === NaN)//falseconsole.log(Object.is(NaN, NaN)) // trueconsole.log(Object.is({ a: 1 }, { a: 1 }))//falseconst arr = [1, 2, 3]console.log(arr.toString())//1,2,3   console.log(Object.prototype.toString.call(arr))//[object Array]

hasOwnProperty() 判断某个属性是否是自身

 console.log(o.hasOwnProperty('username')) // falseconsole.log(o.hasOwnProperty('a')) // true

数组扁平化

实现方式一 数组的flat方法const arr1 = [0, 1, 2, [3, 4, [9, 10]], [7, 8]]console.log(arr1.keys()) // 返回const iterator = arr1.keys()for (const key of iterator) {console.log(key)}console.log(Object.keys(arr1))//['0', '1', '2', '3', '4']
实现方式二 递归
function flat(arr, newArr = []) {arr.forEach((item) => {if (Array.isArray(item)) {flat(item, newArr)} else {newArr.push(item)}})return newArr}
console.log(flat(arr1))//[0, 1, 2, 3, 4, 9, 10, 7, 8]
console.log('x'.repeat(3))//xxxconst paragraph ='The quick brown fox jumps over the lazy dog. It barked.'const regex = /([A-Z])h/const found = paragraph.match(regex)console.log(found)

集合-Set集合不能重复

  const set = new Set()

往集合添加元素

set.add('html')set.add('css')set.add('js')set.add('js')

集合遍历

set.forEach((item) => {console.log(item)})

 集合长度

 console.log(set.size)

判断集合是否含有某个元素

 console.log(set.has('js'))console.log(Array.from(set)) //['html', 'css', 'js'] console.log([...set]) //['html', 'css', 'js']  set.delete('html')console.log(set)//{'css', 'js'}set.clear()console.log(set.size)//0

利用set集合实现数组去重       对原数组进行遍历,判断每个元素不在新数组中,加到新数组中

const s = [...new Set([1, 2, 3, 4, 3, 2])] 
console.log(s)//[1, 2, 3, 4]
const arr = [1, 2, 3, 4, 3, 2]const newArr = []arr.forEach((item) => {if (newArr.indexOf(item) === -1) {newArr.push(item)}})console.log(newArr)// [1, 2, 3, 4]

Map存的是键值对

const map = new Map()map.set('uname', 'zs')map.set('address', { province: '浙江省', city: '杭州' })const o = { a: 1 }map.set(o, { x: 100 })map.delete('uname')console.log(map.get('address'))//objectconsole.log(map.size)//2console.log(map.has('uname'))//false

遍历

map.forEach((v, k) => {console.log(v, k)})

 WeakMap 它的键只能是对象,一个对象作为 WeakMap 的键存在,不会阻止该对象被垃圾回收性能更好

 const weakMap = new WeakMap()weakMap.set(o, 10)console.log(weakMap)

深拷贝方式

const o = {a: 1,b: [2, 3],c: {x: 10,y: 20,},}o.o1 = o // {a,b,c,o1:{a,b,c,o1:}}function deepClone(obj) {if (obj == null) return objif (obj instanceof Date) return new Date(obj)if (typeof obj !== 'object') return objconst newObj = new obj.constructor()for (const key in obj) {newObj[key] = deepClone(obj[key])}return newObj}console.log(deepClone(o))</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/179472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11月28日配置环境中的错误

1.pycharm中的anaconda环境 pycharm中出现Conda executable is not found 2.使用GPU进行训练时&#xff0c;dataloader的numwork2是在linux环境下进行子线程调用&#xff0c;但在windows中是只能单线程&#xff0c;所以num_work 0 才不报错。

隐式类型转化

1. 2. 3. 4. 5. 6. 7. 8.

Flutter开发type ‘Future<int>‘ is not a subtype of type ‘int‘ in type cast错误

文章目录 问题描述错误源码 问题分析解决方法修改后的代码 问题描述 今天有个同事调试flutter程序时报错&#xff0c;问我怎么解决&#xff0c;程序运行时报如下错误&#xff1a; type ‘Future’ is not a subtype of type ‘int’ in type cast 错误源码 int order Databas…

PTA-6-48 使用面向对象的思想编写程序描述动物

题目&#xff1a; 使用面向对象的思想编写程序描述动物&#xff0c;说明&#xff1a; &#xff08;1) 分析兔子和青蛙的共性&#xff0c;定义抽象的动物类&#xff0c;拥有一些动物共有的属性&#xff1a;名字、颜色、类别&#xff08;哺乳类、非哺乳类&#xff09;&#xff0c…

ES8语法async与await

async和await两种语法结合可以让异步代码像同步代码一样。 一、async函数 async函数的返回值为Promise对象promise对象的结果由async函数执行的返回值决定 async function fn() {// 返回一个字符串return 字符串&#xff1b;// 返回的结果不是一个Promise类型的对象&#xf…

气体电介质击穿机理及其模拟

摘 要 气体介质在电场作用下发生碰撞电离而导致电极间贯穿性放电的现象。气体介质击穿与很多因素有关&#xff0c;其中主要的影响因素为作用电压、电极形状、气体的性质及状态等。气体介质击穿常见的有直流电压击穿、工频电压击穿、冲击电压击穿、高气压电击穿、高真空电击穿、…

20分钟拥有自己的ChatGPT4,高效低成本,小白必看

准备工作 1、准备一个3.5的账号 2、一张虚拟卡 开始步骤 从ChatGPT第一版发布到现在&#xff0c;还不到一年的时间中&#xff0c;可是它使用的GPT架构已经从3.5版本进化到现在的4.0版本&#xff0c;随之而来的是其能力的极大提升。下面是GPT-4在其官网的介绍中的一句话&…

NetCDF开发( C++) [Window32位+ VS2013]

NetCDF开发( C) [Window32位 VS2013] 记录在windows32位平台开发netcdf数据配置过程。 1、在netcdf网站(netCDF Downloads)下载相关的库&#xff0c;这里需要下载netCDF4.9.2-NC4-32.exe、netcdf-cxx4-4.3.1.zip。 2、安装netCDF4.9.2-NC4-32.exe到D盘根目录。 3、解压netcdf-c…

conda环境下 ERROR: CMake must be installed to build dlib问题解决

1 问题描述 pip install -r requirements.txt 在构建video_retalking项目过程中&#xff0c;使用命令安装依赖包时&#xff0c;出现如下错误&#xff1a; Building wheels for collected packages: face-alignment, dlib, ffmpy, futureBuilding wheel for face-alignment …

与中通支付对接

最近项目接入商户&#xff0c;商户需要同步给中通支付&#xff0c;报错两个异常已解决。 一、json报错 未接入中通SKD之前&#xff0c;不会报错&#xff0c;接入后&#xff0c;json转换异常。 排查后发现&#xff0c;中通的jar包里JSON版本太低&#xff0c;与自身项目的版本冲…

不会写代码也能做自动化?推荐一款自动化测试神器

在软件测试这条道路上&#xff0c;大部分的职业技能发展道路都会是纯业务手工测试→自动化测试→性能测试→安全测试/测试开发。 但是却有着一部分人起初进入软件测试这一行看重的就是软件测试属于IT行业&#xff0c;门槛比较低&#xff0c;不需要代码基础。 这就导致了这一部…

0基础学java-day9

一、房屋出租系统-需求&&界面 1项目需求说明 实现基于文本界面的《房屋出租软件》。 能够实现对房屋信息的添加、修改和删除&#xff08;用数组实现&#xff09;&#xff0c;并能够打印房屋明细表 2 房屋出租系统-界面 2.1 项目界面 - 主菜单 2.2项目界面- 新增房…

Linux C语言 23-守护进程

Linux C语言 23-守护进程 本节关键字&#xff1a;守护进程、daemon 相关C库函数&#xff1a;sigset、signal、fork、setsid、chdir、umask、open、write、close、sleep 什么是守护进程&#xff1f; 守护进程&#xff08;Daemon&#xff09;也被翻译为精灵进程、后台进程&…

Linux编写Shell命令脚本

1.编写Shell脚本 可以将Shell终端解释器当作人与计算机硬件之间的“翻译官”&#xff0c;它作为用户与Linux系统内部的通信媒介&#xff0c;除了能够支持各种变量与参数外&#xff0c;还提供了诸如循环、分支等高级编程语言才有的控制结构特性。要想正确使用Shell中的这些功能…

git的创建以及使用

1、上传本地仓库 首先确定项目根目录中没有.git文件&#xff0c;有的话就删了&#xff0c;没有就下一步。在终端中输入git init命令。注意必须是根目录&#xff01; 将代码存到暂存区 将代码保存到本地仓库 2、创建git仓库 仓库名称和路径&#xff08;name&#xff09;随便写…

vscode 里怎么自动提示 webpack 配置项?

webpack 的配置项非常多&#xff0c;容易忘记&#xff0c;能自动提示很有用&#xff0c;就是在配置文件里面添加下面代码 // 下面这行用于 vscode 中智能化自动提示 webpack 配置项 /** type {import(webpack).Configuration} */

力扣二叉树--第三十二天

前言 关于路径的两道题。掌握递归函数要不要返回值。用到了defer关键字&#xff0c;起到回溯的作用。 内容 一、路经总和 112.路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所…

文本三剑客之sed

一、sed编辑器 ■ sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的—组规则来编辑数据流 ■ sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储在一个命令文本文件中 1、sed的工作流程主要…

分享一个适用于 Vue3 的好的组件库,PrimeVue组件。

一、PrimeVue介绍 PrimeVue 是一个基于 Vue.js 的 UI 组件库&#xff0c;专注于提供丰富、灵活、现代的 UI 组件&#xff0c;以帮助开发者构建功能强大的 Web 应用程序。PrimeVue 提供了一系列的组件&#xff0c;涵盖了从基本的表单元素到高级的数据表格和图表等各种组件。 二、…

大模型fine-tune 微调

大模型的 Fine-tune 我们对技术的理解&#xff0c;要比技术本身更加重要。 正如我在《大模型时代的应用创新范式》一文中所说&#xff0c;大模型会成为AI时代的一项基础设施。 作为像水、电一样的基础设施&#xff0c;预训练大模型这样的艰巨任务&#xff0c;只会有少数技术…