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

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

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

 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.lryc.cn/news/246753.html

相关文章:

  • NI自动化测试系统用电必备攻略,电源规划大揭秘
  • ky10 server arm 在线编译安装openssl3.1.4
  • 外网IP和内网IP的区别
  • Jquery动画特效
  • Tableau连接到mysql数据库,配置驱动
  • HuggingFace学习笔记--AutoModel的使用
  • Kafka常见面试问题
  • 学习知识回顾随笔(远程连接MySQL|远程访问Django|HTTP协议|Web框架)
  • 一、TIDB基础
  • 【微软技术栈】使用新的C#功能减少内存分配
  • Linux shell编程学习笔记29:shell自带的 脚本调试 选项
  • 分享几个可以免费使用GPT的网站
  • 一. BEV感知算法介绍
  • Scala如何写一个通用的游戏数据爬虫程序
  • 前端命名规范总结
  • Vue学习笔记-搭建Vuex
  • Ajax技
  • Co-DETR:DETRs与协同混合分配训练论文学习笔记
  • ELk部署,保姆级教学超详细!!!
  • 计算机毕业设计springboot+vue高校田径运动会报名管理系统61s38
  • java学习part21枚举
  • MongoDB的部署
  • 解析和存储优化的批量爬虫采集策略
  • 【git】使用ssh
  • Linux 文件锁
  • 原理Redis-SkipList
  • Express内置的中间件
  • Webstorm 插件文件目录颜色分析——白蓝绿红黄灰
  • 蓝桥杯day01——根据给定数字划分数组
  • oracle数据库巡检常见脚本-系列二