编码实现js的Set

Posted ihuning

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编码实现js的Set相关的知识,希望对你有一定的参考价值。

 

编码实现js的Set

 

 1 /**
 2 *
 3 * Set
 4 *
 5 * @author: 阿宁
 6 *
 7 * @date:   2017年5月30日
 8 *
 9 */
10 (function(global){
11 
12     function Set(){
13         this.values = {};
14         this.n = 0;
15         this.add.apply(this,arguments);
16     }
17 
18     Set.prototype.add = function(){
19         for(var i = 0; i < arguments.length; i++){
20             var val = arguments[i];
21             var key = Set._v2s(val);
22             if(!this.values.hasOwnProperty(key)){
23                 this.values[key] = val;
24                 this.n++;
25             }
26         }
27         return this;
28     };
29 
30     Set.prototype.remove = function(){
31         for(var i = 0; i < arguments.length; i++){
32             var key = Set._v2s(arguments[i]);
33             if(this.values.hasOwnProperty(key)){
34                 delete this.values[key];
35                 this.n--;
36             }
37         }
38         return this;
39     };
40 
41     Set.prototype.contain = function(val){
42         return this.values.hasOwnProperty(Set._v2s(val));
43     };
44 
45     Set.prototype.foreach = function(f,c){
46         for(var key in this.values){
47             if(this.values.hasOwnProperty(key)){
48                 f.call(c,this.values[key]);
49             }
50         }
51         return this;
52     };
53 
54     Set._v2s = function(val){
55         switch(val){
56             case undefined:return "u";
57             case null:return "n";
58             case true:return "t";
59             case false: return "f";
60             default:switch(typeof val){
61                 case "number":return "#" + val;
62                 case "string":return "\"" + val;
63                 default : return "@" + objectId(val);
64             }
65         }
66         function objectId(val){
67             var prop = "|**objectid**|";
68             if(!val.hasOwnProperty(prop)){
69                 val[prop] = Set._v2s.next++;
70             }
71             return val[prop];
72         }
73     };
74 
75     Set._v2s.next = 100;
76 
77     global.Set = Set;
78 
79 })(this);

 

以上是关于编码实现js的Set的主要内容,如果未能解决你的问题,请参考以下文章

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

使用Code Snippet简化编码

angularJS使用ocLazyLoad实现js延迟加载

JavaScript笔试题(js高级代码片段)

markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章

VSCode自定义代码片段——JS中的面向对象编程