1.概念

  集合通常是由一组无序的, 不能重复的元素构成。

2.封装集合

// 封装集合的构造函数
function Set() {
  // 使用一个对象来保存集合的元素
  this.items = {}
  
  // 判断集合中是否有某个元素
  Set.prototype.has = function (value) {
    return this.items.hasOwnProperty(value)
  }

  // 向集合中添加元素
  Set.prototype.add = function (value) {
    // 1.判断集合中是否已经包含了该元素
    if (this.has(value)) return false
    // 2.将元素添加到集合中
    this.items[value] = value  
    return true
  }

  // 从集合中删除某个元素
  Set.prototype.remove = function (value) {
    // 1.判断集合中是否包含该元素
    if (!this.has(value)) return false
    // 2.包含该元素, 那么将元素删除
    delete this.items[value]
    return true
  }

  // 清空集合中所有的元素
  Set.prototype.clear = function () {
    this.items = {}
  }

  // 获取集合的大小
  Set.prototype.size = function () {
    return Object.keys(this.items).length  //Object.keys()返回对象的键(数组)
  }

  // 获取集合中所有的值
  Set.prototype.values = function () {
    return Object.values(this.items)  //Object.values()返回对象的值(数组)
  }
}
// 测试
var set = new Set()
set.add(1)
console.log(set.values()) // 1
set.add(1)
console.log(set.values()) // 1
set.add(100)
set.add(200)
console.log(set.values())   // 1,100,200
console.log(set.has(100)) // true
set.remove(100)
console.log(set.values()) // 1, 200
console.log(set.size()) // 2
set.clear()
console.log(set.size())   // 0
posted on 2021-03-14 18:26  李起桉  阅读(70)  评论(0编辑  收藏  举报