美文网首页
JS中常用的数据结构

JS中常用的数据结构

作者: learninginto | 来源:发表于2019-12-07 21:24 被阅读0次

JS中常用的数据结构

数据结构.jpg

1.数组

元素之间有关联性,数组有长度,可重复,可嵌套数据;

插入、删除、添加等操作十分消耗性能,因为查询必须遍历 。

在不需要指定名称,只需要罗列出来的时候使用数组;如果需要指定名称,则用下面的对象。

2.对象

键-->值,根据键查找值,没有长度

属性没有关联性,添加、删除、插入的效率极高 。

查找某个值,必须遍历键,获取各值查找;

查找某个键,直接获取就可以得到这个键的值(速度最快);

在其他语言中,对象的遍历是无序的,而js中对象的键是先添加先遍历,遍历顺序固定

3.set(集合)

set对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

  • 去重

Set 对象只存储独一无二的值,如果你想避免储存重复值,这是比 Array 更好的选择,因为使用 Array,你需要使用额外的代码去处理这种情况。

  • 查找项

使用 indexOf() 或 includes() 去检查一个项是否在数组中很慢。

  • 删除项

在 Set 中,可以使用值去删除一项。而在 Array 中,需要splice()使用项的索引方法。一旦使用索引,速度是很慢的。

  • 插入项:

在 Set 中新增一项比 Array 使用 push() 或者 unshift() 等方法新增一项要快的多。

  • 排序NaN值

无法使用 Array 的 indexOf() 或者 includes() 去定位 NaN 值,

但 Set可以用来保存NaN和undefined, 如果有重复的NaN, Set会认为就一个NaN(实际上NaN!=NaN);

无序,数据无关联性;查找时仍需遍历(只能用for of遍历) 查询速度慢,插入(无法插入在前面),删除,添加速度快

在一组无序不重复的数据中使用set

  • Set.size

size属性的默认值为0

  • 接受具有iterable接口的其他数据结构作为参数
const set2 = new Set(document.querySelectorAll('div')); console.log(set.size); 

遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。

具有iterable类型的集合可以通过新的for ... of循环来遍历。

  • WeakSet 与 Set 的区别:
  1. WeakSet只能存放对象引用,而Set可以存放任何类型的值。
  2. WeakSet 对象中储存的对象值都是被弱引用的,即垃圾回收机制不考虑 WeakSet对该对象的引用,如果没有其他的变量或属性引用这个对象值,则这个对象将会被垃圾回收掉(不考虑该对象还存在于 WeakSet中),运行前后成员个数可能会不一致,遍历结束之后,有的成员可能取不到了(被垃圾回收)。
  3. clear()方法不可用。
  4. WeakSet对象是无法被遍历的(ES6 规定 WeakSet 不可遍历),也没有办法拿到它包含的所有元素。
  5. 其余无差别。

4.map(字典)

  • set和map的区别

同:set和map都是存储不重复的值.

异:set中是以[value,value]存储的,map中是以[key,value]存储的。

  • map和对象的区别

map 和对象都是键值对的集合,区别在于对象的 key值全部自动转成了字符串或者symbol值;

而map 是完整的值 ,键可以是任意类型,可以是任意类型 ,可遍历键,也可遍历值,数据之间没有关联性

遍历速度比对象更快,可以单独遍历其中的键或者值

for(key of map.keys()){
    //遍历键
}
for(key of map.keys()){
    //遍历值
}

  • weakmap和map的区别

WeakMap 对象是一组键值对的集合,其中的键是弱引用对象,而值可以是任意。

注意,WeakMap 弱引用的只是键名,而不是键值。键值依然是正常引用。

WeakMap 中,每个键对自己所引用对象的引用都是弱引用,在没有其他引用和该键引用同一对象,这个对象将会被垃圾回收(相应的key则变成无效的),所以,WeakMap 的 key 是不可枚举的。

5.总结

  • Set

成员唯一、无序且不重复
[value, value],键值与键名是一致的(或者说只有键值,没有键名)
可以遍历,方法有:add、delete、has

  • WeakSet

成员都是对象;
成员都是弱引用,可以被垃圾回收机制回收,可以用来保存DOM节点,不容易造成内存泄漏;
不能遍历,方法有add、delete、has

  • Map

本质上是键值对的集合,类似集合
可以遍历,方法很多可以跟各种数据格式转换

  • WeakMap

只接受对象作为键名(null除外),不接受其他类型的值作为键名
键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的 不能遍历,方法有get、set、has、delete

相关文章

  • 01-08

    今天尝试了pandas工具,Pandas 采用的基础数据结构 DataFrame 与实际使用中JS常用的json较...

  • javaScript引用类型之Array

    总结Array常用的18个api 栈方法(LIFO数据结构--last in first out ...

  • java 数据结构(collections)

    JAVA中常用的数据结构(java.util. 中) java中有几种常用的数据结构,主要分为Collection...

  • 13 个 JavaScript 数组精简技巧

    数组是 JS 最常见的一种数据结构,咱们在开发中也经常用到,在这篇文章中,提供一些小技巧,帮助咱们提高开发效率。 ...

  • 13 个 JS 数组精简技巧

    数组是 js 最常见的一种数据结构,咱们在开发中也经常用到,在这篇文章中,提供一些小技巧,帮助咱们提高开发效率。 ...

  • 前端零基础课程--第十二节课(数组)

    数组 数组是一种常用的保存批量数据的数据结构。 JS中数组元素类型可以不同 元素按线性顺序排列 可以通过元素所在位...

  • 用js实现数据结构(栈结构)

    摘要:数组是计算机科学中最常用的数据结构,我们知道,在js中可以在数组的任意位置添加和删除元素。然而,我们在添加或...

  • 经典排序

    在日常的开发中,数据结构中介绍的排序算法一直都是比较常用,这里我们以js的形式再做一次总结,提高理解。 归并排序 ...

  • JS中常用的数据结构

    JS中常用的数据结构 1.数组 元素之间有关联性,数组有长度,可重复,可嵌套数据;插入、删除、添加等操作十分消耗性...

  • 数据结构与常用集合总结

    数据结构与常用集合总结 数据结构(英语:data structure)是计算机中存储、组织数据的方式。 数据结构是...

网友评论

      本文标题:JS中常用的数据结构

      本文链接:https://www.haomeiwen.com/subject/kocpgctx.html