es6 Set与Map底层原理浅讲

今天我们来简单的写一下Set与Map的底层代码
经过上一篇文章大家也或多或少对Set与Map数据类型有了一定的认知,那么废话不多说,开整。

Set

今天我们要写的Set功能有
1.size(返回Set实例的成员总数)
2.has(返回一个布尔值,表示该值是否为Set的成员)
3.delete(删除某个值,返回一个布尔值,表示删除是否成功)
4.clear(清空整个Set)
5.add(添加某个值,返回 Set 结构本身)

在这里插入图片描述

class Seter {
            constructor(aggregate = []) {
                if (typeof aggregate[Symbol.iterator] !== "function") {
                    throw new TypeError(`${aggregate}不是一个可遍历的值`)
                }
                this.arr = []
                for (const data of aggregate) {
                    this.add(data)
                }
            }
        }

上面我们实现了初始化的一些操作,下面我们来写方法
在这里插入图片描述

 size(){
                return this.arr.length
            }
            add(parameter) {
                if (!this.has(parameter)) {
                    this.arr.push(parameter)
                    return true
                }else{
                    return false
                }
            }
            has(testing) {
                let preservation=false
                for (const item of this.arr) {
                    if (item === 0 && testing === 0) {
                        return true
                    }
                  let receive=Object.is(item,testing)
                  preservation=receive
                  if(preservation==true){
                      return preservation
                  }
                }
                return preservation
            }

上面实现了size,has,add这三个方法,接下来我们再来实现下面的clear与delete方法
在这里插入图片描述

delete(del) {
                if (this.has(del)) {
                    for (let i = 0; i < this.arr.length; i++) {
                        if (this.arr[i] === 0 && del === 0) {
                            this.arr.splice(i, 1)
                            return true
                        } else if (Object.is(del, this.arr[i])) {
                            this.arr.splice(i, 1)
                            return true
                        }
                    }
                } else {
                    return false
                }
            }
            clear(){
                this.arr.length=0
                return true
            }

Map

我们要实现的功能
1.set
2.get
3.size
4.delete
5.has
6.clear
因为Map与Set很相似,那么我就直接使用部分Set的代码(偷偷懒)
在这里插入图片描述
初始化完成,为了便捷我使用两个辅助方法
在这里插入图片描述
部分效果展示
在这里插入图片描述
这个Map我就不将我的代码放出来了,大家也自己敲一下吧,两者还是很相似的,希望对你们有所帮助


版权声明:本文为weixin_51116095原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。