关注
学到了,楼主实现es6实现Set没考虑对象的键只能是字符串的问题,还有forEach()方法,第三个参数是mySet本身,这里改进了下楼主的代码:
class mySet {
constructor(optionsArr = []){
if(!(optionsArr instanceof Array)) throw Error('参数只能为数组')
this.list = {}
this.size = optionsArr.length
optionsArr.forEach(val => {
this.list[val] = val
})
}
add(val){
if(!this.list[val]) {
this.list[val] = val
this.size++
return true
}
return false
}
has(val){
if(val !== null &;&;typeof val === 'object') return false
return this.list.hasOwnProperty(val)
}
delete(val){
if(this.list[val]) {
delete this.list[val]
this.size--
return true
}
return false
}
clear(){
this.list = {}
this.size = 0
}
keys(){
return Object.values(this.list)
}
values(){
return Object.values(this.list)
}
entries(){
return Object.entries(this.list).map(item => {
item[0] = item[1]
return item
})
}
forEach(callback){
let keys = this.keys()
for(let i = 0;i<keys.length;i++) {
callback(keys[i],keys[i],this)
}
}
}
查看原帖
1 1
相关推荐
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
986220次浏览 4953人参与
# 秋招投递攻略 #
294729次浏览 2629人参与
# 27届实习投递记录 #
155972次浏览 1605人参与
# 万物皆可发面经 #
2046次浏览 30人参与
# 从mentor身上学到了__ #
66766次浏览 927人参与
# 你觉得mentor喜欢什么样的实习生 #
63044次浏览 1065人参与
# 我和mentor的爱恨情仇 #
120595次浏览 1024人参与
# 你的mentor是什么样的人? #
65721次浏览 824人参与
# 实习,不懂就问 #
224550次浏览 1736人参与
# 为了求职,我做过的疯狂伪装 #
90333次浏览 790人参与
# 第一次找实习,我建议__ #
88969次浏览 898人参与
# 求职中的尴尬瞬间 #
42890次浏览 127人参与
# 为了入行xx岗,我学了__ #
50806次浏览 409人参与
# 多益网络工作体验 #
74746次浏览 317人参与
# 小红书求职进展汇总 #
247922次浏览 1410人参与
# 除了Java,最推荐学什么技术? #
64632次浏览 410人参与
# 如何准备秋招 #
85206次浏览 878人参与
# 你上一次给父母打电话是什么时候 #
45967次浏览 284人参与
# 父母对你找工作是助力还是阻力? #
50292次浏览 427人参与
# 找工作时的取与舍 #
139643次浏览 928人参与