最通俗易懂的原生 js 封装map 对象

js 封装map 对象

var Map = function() {
  this.keys = new Array,
  this.data = new Object;
  var e = Object.prototype.toString;
  this.size = function() {
      return this.keys.length
  },
  this.put = function(e, t) {
      this.data[e] == null && (this.data[e] = t),
      this.keys.push(e)
  },
  this.get = function(e) {
      return this.data[e]
  },
  this.set = function(e, t) {
      this.data[e] = t
  },
  this.remove = function(e) {
      var t = this.indexOf(e);
      t != -1 && this.keys.splice(t, 1),
      this.data[e] = null
  },
  this.clear = function() {
      for (var e = 0,
      t = this.size(); e < t; e++) {
          var n = this.keys[e];
          this.data[n] = null
      }
      this.keys.length = 0
  },
  this.containsKey = function(e) {
      return this.data[e] != null
  },
  this.isEmpty = function() {
      return this.keys.length === 0
  },
  this.entrySet = function() {
      var e = this.size(),
      t = new Array(e);
      for (var n = 0,
      r = e; n < r; n++) {
          var i = this.keys[n],
          s = this.data[i];
          t[n] = {
              key: i,
              value: s
          }
      }
      return t
  },
  this.each = function(t) {
      if (e.call(t) === "[object Function]") for (var n = 0,
      r = this.size(); n < r; n++) {
          var i = this.keys[n];
          t(n, i, this.data[i])
      }
      return null
  },
  this.indexOf = function(e) {
      var t = this.size();
      if (t > 0) for (var n = 0,
      r = t; n < r; n++) if (this.keys[n] == e) return n;
      return - 1
  },
  this.toString = function() {
      var e = "{";
      for (var t = 0,
      n = this.size(); t < n; t++, e += ",") {
          var r = this.keys[t],
          i = this.data[r];
          e += r + "=" + i
      }
      return e = e.substring(0, e.length - 1),
      e += "}",
      e
  },
  this.values = function() {
      var e = this.size(),
      t = new Array(e);
      for (var n = 0; n < e; n++) {
          var r = this.keys[n];
          t.push(this.data[r]);
      }
      return t;
  }
};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值