ES6基础4(数据结构)-学习笔记
文章目录
- ES6基础4(数据结构)-学习笔记
- set
- map
- symbol
ES6基础4(数据结构)-学习笔记
set
//set 数据结构 类似数组 成员信息唯一性var s = new Set();//添加数据 add()s.add(1).add('2').add(2);//添加数据 另一种写法var s2 = new Set([1,2,3,4,5]);var arr = [1,2,3,4,5];var s3 = new Set(arr);//删除 delete() 按名称来删除 返回true falsevar s2 = new Set([1,'2',2,3,4,5]);s2.delete('2');//删除所有 clear() 没有返回值//has() 匹配是否存在 返回true false 按名称来匹配var s2 = new Set([1,'2','a',3,4,5]);//s2.has('2'); var a = 'a';if(s2.has(a)){console.log('ok')}else {console.log('error')};//属性 size 长度var s2 = new Set([1,'2','a',3,4,5]);console.log(s2.size) //6//数组去重var s5 = [1,2,2,4,5,4,6,3,6,3,6,7,3,3,5,4,3,6,7,3];//es6var a = [...new Set(s5)];//es5function f(){var a = [];for(var i=0;i<s5.length;i++){if(a.indexOf(s5[i])==-1){ //没有匹配成功a.push(s5[i])} };return a;}f();//es5 另一种方式function f2(){for(var i=0;i<s5.length;i++){for(var j=i+1;j<s5.length;j++){if(s5[i]==s5[j]){s5.splice(j,1);j--;}}};return s5;}f2();//类型转换//set 转 数组var s5 = [1,2,2,4,5,4,6,3,6,3,6,7,3,3,5,4,3,6,7,3];var a = [...new Set(s5)];var a2 = Array.from(new Set(s5))//扩展//求出大于100的数据且去重var arr = [20,32,23,15,63,543,24,26,3,266,34,246,242,22,123,123,266,246,345,234,123];//分析//1、求出大于100var a = arr.filter(item=>item>100);//2、去重var b = new Set(a);//3、类型转换//[...b]//Array.from(b)//简化var c = [...new Set(arr.filter(item=>item>100))];var c = Array.from(new Set(arr.filter(item=>item>100)));// var a = arr.filter(function(item,index){// return item >100// });// var a = arr.filter(item=> item >100)//求二组数据的 并集 交集 差集var arr1 =[2,3,5,2,5,7,3,5,36,4];var arr2 = [8,9,4,1,2,3,7,3];//并集 且去重var a = [...new Set([...arr1,...arr2])];//交集//分析//var a = arr1.filter(function(item){// return arr2.indexOf(item)!=-1;// return new Set(arr2).has(item);//})var a = [...new Set(arr1.filter(item=>arr2.indexOf(item)!=-1))]; //法1var a = [...new Set(arr1.filter(item=>new Set(arr2).has(item)))]; //法2//差集var a = [...new Set(arr1.filter(item=>!new Set(arr2).has(item)))]; //法2
map
//Map 类似于object 键值对 map的键是可以是其它的类型var m = new Map();//添加m.set('name','abc').set('id',1);var a = {msg:'abc'};m.set(a,'11111');m.get(a); // 11111//方法和属性// set(); //添加// get(); //获取// has(); //是否匹配// delete(); //删除单个 m.delete("id")// clear(); //删除全部// size //长度添加数据 另一种写法var m = new Map([['a',1],['b',2],['c',3]]);//循环 for...of 替代for ...in forEach()//可循环是array set map 但不能是object// keys():返回键名的遍历器 m.keys() //abc// values():返回键值的遍历器 m.values() // 123// entries():返回键值对的遍历器for(var v of m.keys()){console.log(v)};for(var v of m.values()){console.log(v)}for(var [k,v] of m){console.log(v)}//类型转换//Object转数组var obj = {'a':1,'b':2,'c':3};//[a,b,c] [1,2,3]Object.keys(obj); //es5 [a,b,c] Object.values(obj); //es5 [1,2,3]//map转数组var m = new Map([['a',1],['b',2],['c',3]]);[...m.keys()] ;//["a", "b", "c"][...m.values()];[...m]; //[['a',1],['b',2],['c',3]]//map转为objectvar m = new Map([['a',1],['b',2],['c',3]]);var obj2 = {};for(let [k,v] of m){ //k=====a b c | v==== 1,2,3obj2[k] = v; //obj2['a'] = 1 | obj2['b'] = 2};console.log(obj2) //{a: 1, b: 2, c: 3}//object 转为 mapvar obj3 = {a: 1, b: 2, c: 3};var m2 = new Map();for(let k in obj3){m2.set(k,obj3[k])};console.log(m2)
symbol
//symbol es6 引入的新的类型 表示独一无二的值//如果添加的属性名出现重复,如何保证属性名的唯一性,解决属性名的冲突var obj = {id:1,id:2,id:3,name:123};console.log(obj) //{id:3,name:123}//声明var s = Symbol();console.log(s);//独一无二的值var s2 = Symbol();var s3 = Symbol();console.log(s2==s3); //false//可以接受一个字符串作为参数 symbol的值var s2 = Symbol('name'); var s3 = Symbol('name');console.log(s2==s3); //false//symbol定义一个名称,可以通过名称来获取var x = Symbol.for('x'); var x2 = Symbol('x'); Symbol.keyFor(x);Symbol.keyFor(x2)//实际的应用var o = {};var s4 = Symbol();o[s4] = 'abc';console.loe(o)//第二种写法var o = {[s4]:'xyz'}//demovar a = Symbol();var o ={[a] :100,a:200};o.a; //200o['a'];//200o[a]; //100var _name = Symbol('name');var _age = Symbol();var o = {[_name]:200,[_age]:100,c:200,d:100};// o[_name];// o[_age];Object.keys(o) //[c,d]//注意 Object.keys for...in 不支持for(let k in o ){console.log(k) //c,d}
ES6基础4(数据结构)-学习笔记相关推荐
- ES6基础教程一 学习笔记
一.变量的声明 1.var 声明全局变量 在ES6中var用来声明全局变量. 2.let 声明局部变量 3.const 声明常量 二.变量的解构赋值 //1.数组赋值 let [a,b,c]=[1,2 ...
- 数据结构学习笔记(七):哈希表(Hash Table)
目录 1 哈希表的含义与结构特点 1.1 哈希(Hash)即无序 1.2 从数组看哈希表的结构特点 2 哈希函数(Hash Function)与哈希冲突(Hash Collision) 2.1 哈希函 ...
- Python数据结构学习笔记——栈
目录 一.栈的定义和特性 (一)栈的定义 (二)栈的反转特性 二.实现分析步骤 三.栈的Python实现代码 四.栈的应用 (一)匹配圆括号 (二)匹配符号 (三)模2除法(十进制转二进制) (四)进 ...
- 考研[*数据结构*]学习笔记汇总(全)
文章目录: 一:预备阶段 二:基础阶段笔记 三:冲刺阶段笔记 四:各章节思维导图 五:题库 来源:王道计算机考研 数据结构 一:预备阶段 之前的数据结构笔记 数据结构--学习笔记--入门必看[建议收藏 ...
- 数据结构学习笔记(王道)
数据结构学习笔记(王道) PS:本文章部分内容参考自王道考研数据结构笔记 文章目录 数据结构学习笔记(王道) 一.绪论 1.1. 数据结构 1.2. 算法 1.2.1. 算法的基本概念 1.2.2. ...
- 数据结构学习笔记(六):二叉树(Binary Tree)
目录 1 背景知识:树(Tree) 2 何为二叉树(Binray Tree) 2.1 二叉树的概念与结构 2.2 满二叉树与完全二叉树 2.3 二叉树的三种遍历方式 3 二叉树及其遍历的简单实现(Ja ...
- 数据结构学习笔记(五):重识字符串(String)
目录 1 字符串与数组的关系 1.1 字符串与数组的联系 1.2 字符串与数组的区别 2 实现字符串的链式存储(Java) 3 子串查找的简单实现 1 字符串与数组的关系 1.1 字符串与数组的联系 ...
- 数据结构学习笔记(四):重识数组(Array)
目录 1 数组通过索引访问元素的原理 1.1 内存空间的连续性 1.2 数据类型的同一性 2 数组与链表增删查操作特性的对比 2.1 数组与链表的共性与差异 2.2 数组与链表增删查特性差异的原理 3 ...
- 数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o
目录 前言 一.顺序表的定义 二.顺序表的初始化 三.顺序表的建立 四.顺序表的输出 五.顺序表的逆序输出 六.顺序表的插入操作 七.顺序表的删除操作 八.顺序表的按位和按值查找 基本操作的完整代码 ...
- Python数据结构学习笔记——链表:无序链表和有序链表
目录 一.链表 二.无序链表 实现步骤分析 三.无序链表的Python实现代码 四.有序链表 实现步骤分析 五.有序链表的Python实现代码 结语 一.链表 链表中每一个元素都由为两部分构成:一是该 ...
最新文章
- SpringBoot学习平台
- 图像的放大与缩小(2)——双线性插值放大与均值缩小
- 毕业生必须知道:干部身份、三方协议、派遣证
- 【D3.V3.js系列教程】--(十四)有路径的文字
- Django 3.2.5博客开发教程:URL与视图函数
- SP10707 COT2 - Count on a tree II
- Android的sdk、api及工程目录说明
- LeetCode 775. 全局倒置与局部倒置(归并排序/二分查找/一次遍历)
- 谷歌官方推出 TensorFlow 中文视频:机器学习从零到一
- 通过json动态创建控制器
- Codeforces Round #326 (Div. 2) B. Pasha and Phone C. Duff and Weight Lifting
- IIS出现问题时修改配置文件的几项说明
- 【Auto.JS】入门宝典—Auto.JS开发使用笔记(随笔和使用心得)
- 进销存系统收费标准是怎样的?
- 用计算机画画的意义,浅谈电脑绘画在美术教学中的意义.doc
- 声纹识别中pooling总结
- mongoDB百度脑图总结
- python写文字方法_初学Python-简单的在图片上加文字
- Oracle 常用工具和问题分析
- 【CSS3 属性】CSS 3 transform:scale 与 transform:translate 作用在同一div元素,导致元素位置偏离
热门文章
- Kafka学习 之 第一个例子(一)
- hadoop3.0.0 源码阅读之一:IPC Client部分
- Leecode05. 最长回文子串——Leecode大厂热题100道系列
- 【已解决】IDEA 配置tomcat后,javaweb项目报404
- [leetcode]83.删除排序链表中的重复元素
- count(id)count(1)count(*)count(字段)
- 苹果mac电脑修改并快速linux网络配置
- Linux进程和计划任务管理(详细图例)
- apriori算法代码python_Apriori算法的Python实现
- python property方法_Python——property(使一个方法看起来就像类属性一样)