JS es6中对数组扩展 对象新增(数据结构) Set Map

Notepad++ 下载安装使用指南【一文通关,超详细~】 Notepad++ 文本编辑器的下载、安装及使用教程,附常用快捷键和相关实操案例 阅读详情

一:数组新增

数组可以存储多个数据,在JavaScript中已经学习了数组定义和一些方法包含添加、删除、获取等。es6中对数组一些方法进行了扩展。

新增方法

  • Array.of

语法:Array.of( ...args )

作用:Array.of

代码案例:

    <script>
        let arr = [];
        // let arr2 = new Array(1, 2, 7);
        let arr2 = new Array(7); //有歧义
        let arr3 = Array.of(7);
        // let arr3 = Array.of(7, 9, 11);
        console.log(arr2, arr3);
    </script>
  • Array.from

语法:Array.from( arrayLike )

作用:把伪数组或可遍历的对象转换成真正的数组,相对于ES5的写法,更加简洁方便

代码案例:

  <body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
        let divs = document.getElementsByTagName('div');
        let arr5 = Array.from(divs); //将伪数组转换成真正的数组
        console.log(divs, arr5);

        let obj = {
            0: '11',
            1: "b",
            'ok': "lisi",
            2: 100,
            length: 3
        };

        let arr6 = Array.from(obj); //将可遍历的对象转换成真正的数组
        console.log(arr6);
    </script>
</body>

二:对象新增

对象(object)是 JavaScript 最重要的数据类型。ES6 对它进行了重大升级,包括(数据结构本身的改变和Object对象的新增方法)

对象的简写形式:

1)、对象属性名简写:当对象的属性名与属性值同名时可以简写

2)、对象的方法简写:直接省略冒号及function关键词

代码案例:

<script>
        let usr = "张三";
        let age = 20;
        // let obj = {
        //     "usr": usr,
        //     "age": age
        // };
        let obj = {
            usr,
            age,
            // fn: function() {
            fn() {
                console.log('fn()方法');
            }
        };
        console.log(obj);
        obj.fn();
    </script>

对象属性名表达式

对象属性名表达式的语法:对象[表达式]或 {[表达式]:属性值}

代码案例:

 <script>
        let t = 3;
        let obj = {
            "x": 11,
            ["x" + t]: 99,
            "y": 100,
            "z": "OK"
        };

        obj["z" + t] = 'yes';
        console.log(obj);

        //需求:遍历对象
        for (let k in obj) {
            console.log(k, obj.k, obj[k]);
        }
    </script>

新增方法:

Object.keys

语法:Object.keys( object )

描述:返回一个数组,成员是参数对象自身的属性的键名

Object.values

语法:Object.values( object )

描述:返回一个数组,成员是参数对象自身的属性的键值

代码案例:

<script>
        // Obj.keys() ;  //获取对象中所有的键名
        let obj = {
            x: 1,
            y: 22,
            z: 100
        };

        let kArr = Object.keys(obj);
        let vArr = Object.values(obj);
        console.log(kArr, vArr);
    </script>
  • Object.assign

语法: Object.assign( target,source1,source2,... )

描述:对象的合并( 拷贝 ),将源对象(source),复制到目标对象 ( target )

代码案例:

<script>

        let obj2 = {
            "usr": "李四",
            "age": 20
        };
        let obj3 = {
            "a": 11,
            "b": 99,
            "c": 'Hello',
            "d": ["yes", "OK", 'zhangsan']
        };

        let obj4 = {};
        Object.assign(obj4, obj2, obj3); //浅拷贝
        obj4.d[1] = '小李';
        console.log(obj4, obj3);
    </script>
  • SON.parse

语法:JSON.parse( jsonstr)

描述:把json字符串转换成真正的js对象

  • JSON.stringify

语法:JSON.stringify( object )

描述:把真正的js对象转换成json字符串

代码案例:

  <script>
        let str = '{"email":"lisi@qq.com","uid":11}';
        let strObj = JSON.parse(str); //ajax知识点
        let str2 = JSON.stringify(strObj);
        console.log(strObj, strObj.uid, str2, typeof str2);
    </script>

三:Set

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值

基本用法

代码案例:


 <script>
        //Set是es6新增的数据结构,Set类似于数组,但与数组不同的是Set中的值是唯一的、没有重复

        let curset = new Set([11, 2, 3, 9, 11, 2, 99]);
        curset.add('hello');
        curset.delete(99);
        console.log(curset.has(99), curset.has(9), curset.size);
        // curset.clear();
        let arr = Array.from(curset);
        console.log(curset, curset[4], arr[4]);
    </script>

常见方法

  • size 获取set集合的长度

  • add(值) 给集合添加值,返回新set

  • delete(值) 删除某个值,返回布尔值,表示是否删除成功

  • has(值) 查询这个值是否时集合的成员,返回布尔值

  • clear() 清空集合,没有返回值

  • 代码案例:

  • <script>
    
            //Set应用:数组去重
            function uniqueArr(arr) {
                return Array.from(new Set(arr));
            }
    
            let arr8 = [11, 1, 2, 3, 2, 5, 7, 3];
            console.log(uniqueArr(arr8));
        </script>

    四:Map

    ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

  • 常见方法

  • size 获取Map的长度

  • set(key,val) 添加一条数据

    • get(key) 根据key获取val

    • has(key) 是否存在key

    • delete(key) 删除某条数据

    • clear() 清空所有数据

    • 代码案例:

    • <body>
          <div>1</div>
          <div>2</div>
          <div>3</div>
          <script>
              //Map:是es6新增的数据结构,Map类似于对象,但与对象不同的是对象的键名通常是字符串,而Map中的键名可以是任意类型。
      
              let obj = {
                  "x": 11,
                  "uid": 321,
                  "uname": "李四"
              };
      
              let divs = document.getElementsByTagName('div');
              let curMap = new Map();
      
              let k1 = false;
              curMap.set(k1, 'OK');
              curMap.set(divs, 'lisi@qq.com');
              console.log(curMap.has(k1));
              console.log(curMap, curMap.get(divs));
          </script>
      </body>
PIPE Interface解析之PIPE SerDes/Original架构 PIPI Interface;SerDes架构;Original架构;PHY Tx结构;PHY Rx结构; 阅读详情

相关推荐

redhawk如何看高toggle rate instance

1.图形界面View-Power Map - Toggle Map of Instances。redhawk通过报告和图形界面两种方式查看高toggle rate的instance。2.看warning log,在adsRpt/Warn里,搜toggle rate。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 471

新增数组对象方法

1 isArray() Array.isArray()方法是用来判断某个值是否是数组,如果是,则返回true,否则返回false,用于判断一些类似数组对象很有用。 因为无论是数组还是对象,对于typeof的操作返回值都为object,所以就有了区分数组类型和对象类型的需要.而有些对象中又存在length属性, instanceof用来判断内存中实际对象A是不是B类型 2 indexOf(),lastIndexOf() [ES5] indexOf()方法返回给定元素能找在数组中找到的第一个索引值,否则则返回

qq_45785424的博客 2084

【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势!

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 960

ES6新增对象方法

Object.keys()、Object.values()、Object.entries()的用法 一、 Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有可枚举属性的字符串数组 处理对象,返回可枚举的属性数组 let person = {name:"张三",age:25,address:"深圳",getName:function(){}}; console.log(Object.keys(person)); 在这里插入图片描述 处理数组,返

xiannverhaha的博客 1050

ES6新增数组的方法

一.Array.from() Array.from 方法用于将两类对象转为真正的数组:类似数组对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增数据结构 SetMap) let arrayLike = { "0": "a", "1": "b", "2": "c", length: 3 }; // ES5的写法 var

weixin_33912246的博客 2225

jsES6新增数组方法详解(建议收藏)

希望本文能够对您有所帮助!

常来常往,共同成长 809

js数组添加对象

数组添加对象

weixin_42611825的博客 4万+

JavaScript ES6 字符串、数组MapSet

文章目录一、字符串1.对Unicode的支持2.字符串新增的方法3.模板字符串二、数组1.扩展运算符…三、对象1.扩展运算符…2.新的定义方式3.新增的方法四、Map、WeakMap1.Map2.WeakMap五、Set 一、字符串 1.对Unicode的支持 ES5可以使用\uxxxx形式表示⼀个字符,xxxx是字符的Unicode码,但只能表示\u0000~\uFFFF之间的字符,超出这个范围就不能正确识别。 ES6增加了对超出\u0000~\uFFFF范围的Unicode字符的⽀持 let str="

a13456989814的博客 279

前端介绍之ES6 语法指南

ES6 语法指南 后端项目搭建完毕,接下来就是前端页面了。不过在这之前需要一些准备工作。我们需要学习ES6的语法标准。 什么是ES6?就是ECMAScript第6版标准。 4.1.什么是ECMAScript? 来看下前端的发展历程: web1.0时代: 最初的网页以HTML为主,是纯静态的网页。网页是只读的,信息流只能从服务的到客户端单向流通。开发人员也只关心页面的样式和内容即可。 web2.0时代: 1995年,网景工程师Brendan Eich 花了10天时间设计了Ja

liuerchong的博客 5391

ES6引入了哪些新的内置方法,它们如何改善了JavaScript的开发体验?

ES6(ECMAScript 2015)引入了许多新的内置方法,这些方法显著改善了JavaScript的开发体验。总之,ES6引入的这些新特性和内置方法极大地改善了JavaScript的开发体验,使得代码更加简洁、易读、高效和可维护。

极客前端探索者的博客 687

学习笔记之ES6

来源: http://es6.ruanyifeng.com/#README

小于零等于二的博客 1845

Es6常用语法

1、let const let 定义与const 定义暂时性死区:只要当前作用域声明过某个变量,那么声明前使用该变量就会报错。 let 定义的变量可以改变,const 定义的为常量,不可改变,但const定义的对象可以添加属性 const a = 10 a=20 console.log(a) //报错 const a = { name : "csdn" } a

qq_44681872的博客 616

es6--看es6入门整理

()const和let 1.let a.暂时性死区(“暂时性死区”也意味着typeof不再是一个百分之百安全的操作),且let不允许在相同作用域内,重复声明同一个变量 2. const a.const声明一个只读的常量。一旦声明,常量的值就不能改变,且const一旦声明变量,就必须立即初始化,不能留到以后赋值。 b.和let一样存在暂时性...

dasiy_j的博客 245

ES6

一、ES6项目构建 二、ES6 基本语法 2.1 let 和 const(块作用域) 使用 let 定义变量,不能重复定义 let a = 1 let a = 2 //报错,不能重复定义 const :常量,声明的时候同时必须赋值,之后不能修改 2.2 解构赋值 解构赋值:简单理解就是等号的左边和右边相等。 解构赋值的分类 数组解构赋值() let a,b [a,b,…c] =...

weixin_39111384的博客 147

ES6 标准入门

let const命令 不存在变量提升,var 可以提升 暂时性死区(TDZ):在区块中存在let,const命令,这些区块在一开始就对这些命令声明的变量形成封闭作用域,只要在声明之前使用这些变量就会报错。在let const声明变量之前,该变量不能使用。 不允许重复声明 块级作用域 外层作用域无法调用块级作用域内部定义的变量,函数 内层作用域可以定义外层作用域 的同名变量 变量结构赋值 ...

望天一方小叶子的博客 383

ES5和ES6

ES5和ES6 我们所说的 ES5 和 ES6 其实就是在 js 语法的发展过程中的一个版本而已 比如我们使用的微信 最早的版本是没有支付功能的 随着时间的流逝,后来出现了一个版本,这个版本里面有支付功能了 ECMAScript 就是 js 的语法 以前的版本没有某些功能 在 ES5 这个版本的时候增加了一些功能 在 ES6 这个版本的时候增加了一些功能 因为浏览器是浏览器厂商生产的 ECMAScript 发布了新的功能以后,浏览器厂商需要让自己的浏览器支持这些功能 这个过程是需要时间的 所

wangchuan_long的博客 331

ES6学习(附电子书链接,高赞文章整理)

阮一峰的ES6教程(ES6 教程 - 网道) 重点知识 let 和 const 命令 高赞文章(ES6,let 和 const 命令 - 掘金) let声明的变量只在当前代码块有效作用域不会提升,并且不允许重复声明。 const包含let的特性,并且无法被重新赋值。 变量的赋值结构 函数的扩展 数组扩展 对象扩展 对象新增方法 Symbol唯一值 SetMap 数据结构 Proxy Reflect Promise 对象 async 函数 Iterator 和 fo

weixin_45932460的博客 473

Hz零基础学习ES6

1、ES6 ES6是什么? ECMAScript6.0(ES6)是JavaScript语言下一代的标准,已经在2015年6月正式发布。它的目标是使得JavaScript语言可以编写复杂的大型应用。 ECMAScript与JavaScript区别? ECMAScript是一种标准规范,JavaScript是ECMAScript的具体实现。 ES6与ECMAScript2015的关系?...

qq_33274797的博客 652

ES6基础

一、let与const 1.let let是变量声明的关键字。 特点: 块级作用域:只在声明的代码块内有效 {} { let a='a' console.log(a);//a } 在同一作域内不允许重复声明同一个变量,但可以二次赋值 { //错误 let a='a'; let a='b' } 没有变量提升 ,暂时性死区 不允许在变量声明之前使用变量,暂时性死区:在声明变量之前无法操作或者读取这个变量。var存在变量提升,即变量可以在声明之前使用,值为und

m0_53456432的博客 456

ES6基础语法

1.ES6概述 ES:全程ECMAScript,代表了一种标准语法,主要的实现以JavaScript为代表 ES的版本迭代 ECMAScript 1.0 1997年推出,标志着前端脚本语法出现了标准化 ECMAScript 3.0 1999年推出 ECMAScript 4.0 2007年推出,一经退出,经过讨论直接废弃 ECMAScript 5.0 2009年推出,本质上是ES 3.1 ECMAScript 2015 2015年推出,使用年份命名,简称ES6 .。。。 ES5.0基本语法 严格模

weixin_44978043的博客 311

ES6的新特性

es6

RzhenDwo的博客 193

ES6笔记

它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map也实现了iterator 接口,所以可以使用【扩展运算符】和【for…它类似于数组,但成员的值都是唯一的,集合实现了iterator 接口,所以可以使用【扩展运算符】和【for…4. has : 检测集合中是否包含某个元素,返回boolean值。4)has:检测Map中是否包含某个元素,返回boolean值。2)set:增加一个新元素,返回当前Map。1)size:返回Map的元素个数。

qq_56088882的博客 399

毕业设计论文SpringBoot农产品销售管理平台.docx

毕业设计论文

正文V-M双闭环直流可逆调速系统设计.doc

正文V-M双闭环直流可逆调速系统设计.doc

上一篇: 前端 ES6新增方法 JavaScript 语言的第七种数据类型Symbol这是真的细
下一篇: JavaScript ES6新增运算符表达式 1.结构赋值2.数组结构赋值语法3.对象结构 细细细
倾城857
博客等级 码龄5年 1粉丝 14原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值