这是我参与2022首次更文挑战的第19天,活动详情查看:2022首次更文挑战」。
我个人觉得要想进大厂,就必须学习了解算法和数据结构,经历了多次面试之后,也知道了算法和数据结构的重要性,所以,我也打算从今天开始,进入学习,下载了一下电子书,边看书,边跟着书的例子来敲一下代码,下面就开始总结一下对算法和数据结构的学习吧。
第十九天:继续学习集合
-
delete(element)
下面要实现的是delete
delete(elemment) { if(this.has(element)) { delete this.items[element] return true } return false }我们还是一样,先检查element是否存在与集合中,如果存在就从集合中移除element,返回true,表示元素成功被移除;否则返回false。因为我们使用的对象存储集合的元素,可以简单地使用delete元素符从items对象中移除属性。
-
clear()
实现clear方法,移除所有元素。
clear() { this.items = {} }要清楚所有的对象,只需要把一个空对象重新赋值给它。我们也可以迭代集合,用delete方法去进行移除所有的元素,不过既然有更简单的方法,这样做就太麻烦了。
-
size()
下一个要实现的是size方法。该方法有三种实现的方式。
第一种就是直接使用一个length变量,每当使用add或delete方法时就控制它。
第二种方式是使用js中Object类的一个内置方法
size() { return Object.keys(this.items).length }es6中的Object类中有一个keys方法,它返回一个包含给定对象的属性个数。
第三种就是手动提取items对象的每一个属性。
size() { let count = 0 for(let key in this.items) { if(this.items.hasOwnProperty(key)){ count++ } } return count }迭代items对象的所有属性,检查它们是否是对象自身的属性。如果是,就递增count变量的值,最后在方法结束时返回这个数。
-
values
要实现values方法,我们一样可以使用es6的对象的方法
values() { return Object.values(this.items) }如果想要在任何浏览器都能执行,可以下面这样写
values() { let values = []; for(let key in this.items) { if(this.items.hasOwnProperty(key)){ values.psuh(key) } } return values }首先迭代对象的所有属性,吧他们添加到一个数组中,并返回这个数组。