当前位置:   article > 正文

map和set数据结构_map 和set是什么数据结构

map 和set是什么数据结构

今天学习了map和set数据结构,感觉比我之前学习的东西稍微好理解一些。就在这里分享一下自己的心得!

set数据结构

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成 Set 数据结构。只要是这个数据结构具有interator接口,都可作为参数传递。

    let str = ['r', 'j', 'l', 'r'];
    let strset = new Set(str);
    let laststr = [...strset];
    console.log(laststr); //输出['r','j','l']
  • 1
  • 2
  • 3
  • 4

因为set数据结构不能有重复的值,所以在转换的过程中实现了去重。

const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
  console.log(i);
}
// 2 3 5 4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

上面这段代码是我复制阮一峰老师博客的一段代码,重在理解set的add()方法。通过该方法可以向set返回的对象里面传值。

我所知道的有两种方式将set数据结构转换为数组

  let set = new Set(['1', '2']);
  console.log(Array.from(set));  //或者[...set]
  • 1
  • 2

set的内容相对比较少,接下来看一下map数据结构

map数据结构

javaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。上面代码原意是将一个 DOM 节点作为对象data的键,但是由于对象只接受字符串作为键名,所以element被自动转为字符串[object HTMLDivElement]。

为了解决这个问题,ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

map的set()方法就相当于set结构的add()方法。

感觉这一章就是这些数据结构的方法的使用,基本上没啥好说的。最后就是展示一下数据结构的转换。

对象转换为map数据结构

   let obj = {
            name: 'renjialei',
            age: 18
        }
        function ObjToMap(objs) {
            let map = new Map();
            for (let key in objs) {   
                map.set(key, objs[key]);
            }
            return map;
        }
        console.log(ObjToMap(obj));  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

map数据结构转换为对象

   let map = new Map([
                ['name', 'renjialei'],
                ['age', 18]
            ]);

            function MapToObj(map) {
                let obj = {};
                for (let [key, value] of map) {
                    obj[key] = value;
                }
                return obj;
            };
            console.log(MapToObj(map));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

map数据结构转换为json

  function MapToJSON(map) {
                return JSON.stringify(MapToObj(map));
            }
            console.log(MapToJSON(map));
  • 1
  • 2
  • 3
  • 4
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/570902
推荐阅读
相关标签
  

闽ICP备14008679号