ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构

2021-06-12 12:35:02  阅读:92  来源: 互联网

标签:arr 数据结构 删除 元素 数组 Array prototype


一、数组
1、保留插入顺序
2、通过索引访问元素(索引与排序有关系)
3、可迭代
4、JS数组大小可以动态调整,但内存无法掌控(c++静态数组,长度不可变)
5、允许值重复,且可以为混合类型
6、删除和查找元素比较消耗性能 eg: find() 和 findIndex()  ~~~遍历查询,消耗性能,删除元素后,后边元素向前补位
7、有序集合,可以通过索引值访问

查询元素
find()
findIndex()
删除元素
splice()

arr.concat() 返回被连接数组的一个副本
arr.join() 返回被指定分割符分割的字符串
arr.slice(startIndex,endIndex) 返回被剪切的元素片段
arr.pop() 返回被删除的元素,如果是空数组则不改变原数组,返回undefined
arr.push()  返回指定的值添加到数组后的新长度
arr.shift() 功能:把数组的第一个元素从中删除,返回值:被删除的元素
arr.unshift() 功能:向数组的开头添加一个或多个元素,返回值:返回数组的新长度
arr.splice() 功能:向数组添加项目或者从数组中删除项目  返回值:参数2被删除的元素数组
arr.reverse() 功能:颠倒数组中元素的顺序  返回值:返回颠倒顺序之后的数组
arr.sort()    返回值:排序之后的数组

原型方法:
Array.prototype.indexOf
Array.prototype.lastIndexOf
Array.prototype.every
Array.prototype.some
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.reduce
Array.prototype.reduceRight
Array.prototype.includes
Array.prototype.find
Array.prototype.findIndex

ES6方法:
Array.of(): 将元素列表转为数组,避免new Array()带来的诡异行为
Array.from(iterator,fn,obj): 将具有Iterator接口的对象或类数组转为数组
Array.keys()
Array.values()
Array.entries()

二、集合(Sets)
1、实例化创建,add添加
2、元素不能重复(元素唯一性)
3、无序集合,存储和读取的顺序可能不一样,无法通过索引值访问,需要通过方法访问或获取元素
4、for循环可遍历
5、大小(长度)可动态调整
6、删除和查找元素简单快捷(不会影响其他元素位置,因此性能消耗较低)

添加元素:
add()
访问元素:
has()
删除元素:
delete()

三、对象(Object)
1、无序的键值对数据
2、通过键名(属性)访问元素
3、不可遍历(for...in除外)
4、键是唯一的,值不是
5、可以存储数据和函数
6、有原型方法

删除属性
delete person.age

四、映射(Maps)
1、有序的键值对数据
2、通过键访问元素
3、可遍历(for循环)
4、键是唯一的,值不是
5、键可以是各种类型的值(包括对象、数组)
6、纯数据存储,针对数据访问进行了优化
7、大数据量时,性能优于对象

实例化:
new Map()
添加元素:
map.set('average',1.6)

五、弱集合与弱映射
集合和映射的 变体,值和键仅"弱引用",如果未在应用程序的其他任何地方使用,垃圾回收则可以删除键和值


六、链表
单链表:每一个元素都知道下一个元素
可以有效的调整大小并再列表的开头和结尾插入
1、为什么使用链表
历史上,为方便内存管理(节约内存):不必事先指定内存大小,防止多余内存浪费
如今,JS具有动态数组,而内存也并不再是JS应用程序中的主要问题
* 在列表的开头进行高频插入操作,链表会很有用--链表比数组操作更快

七、衡量性能(时间复杂度 -- 大O符号)
1、线性时间复杂度
2、常数阶时间复杂度
3、对数阶时间复杂度
4、线性对数时间复杂度
5、平方阶时间复杂度

*** 代码执行时间的增长变化趋势

八、列表&表格
列表:值的集合,eg:数组、集合、链表 适合存储通过位置(通过索引或搜索)检索的值,也适合循环
表格:键值对的集合 eg:对象、映射 适合存储通过键检索的值,不关注循环

九、列表-堆栈
1、Last In, First Out  简化的数组
2、栈顶推入 Push      栈顶删除  Pop
3、使用场景:调用堆栈

十、队列

 

十、哈希表
1、现有JS的对象都是基于哈希表实现的
2、哈希表  = 索引 + 值       key => hash函数 => 索引

 

标签:arr,数据结构,删除,元素,数组,Array,prototype
来源: https://www.cnblogs.com/nanhuaqiushui/p/14877995.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有