Javascript HashTable use Object key

后端 未结 11 1248
误落风尘
误落风尘 2020-12-13 17:29

I want to create a hash table with Object keys that are not converted into String.

Some thing like this:

var object1 = new Object();
var o         


        
11条回答
  •  暖寄归人
    2020-12-13 18:17

    I took @Ilya_Gazman solution and improved it by setting '_hashtableUniqueId' as a not enumerable property (it won't appear in JSON requests neither will be listed in for loops). Also removed UniqueId object, since it is enough using only HastTable function closure. For usage details please see Ilya_Gazman post

    function HashTable() {
       var hash = new Object();
    
       return {
           put: function (key, value) {
               if(!HashTable.uid){
                   HashTable.uid = 0;
               }
               if (typeof key === "string") {
                   hash[key] = value;
               } else {
                   if (key._hashtableUniqueId === undefined) {
                       Object.defineProperty(key, '_hashtableUniqueId', {
                           enumerable: false,
                           value: HashTable.uid++
                       });
                   }
                   hash[key._hashtableUniqueId] = value;
               }
           },
           get: function (key) {
               if (typeof key === "string") {
                   return hash[key];
               }
               if (key._hashtableUniqueId === undefined) {
                   return undefined;
               }
               return hash[key._hashtableUniqueId];
           }
       };
    }
    

提交回复
热议问题