有这样一个函数实现hashTable 功能
代码如下:
 function Hashtable()
        {
            this.clear = hashtable_clear;
            this.containsKey = hashtable_containsKey;
            this.containsValue = hashtable_containsValue;
            this.get = hashtable_get;
            this.isEmpty = hashtable_isEmpty;
            this.keys = hashtable_keys;
            this.put = hashtable_put;
            this.remove = hashtable_remove;
            this.size = hashtable_size;
            this.toString = hashtable_toString;
            this.values = hashtable_values;
            this.hashtable = new Array();
        }        //清除 hashtable
        function hashtable_clear()
        {
            this.hashtable = new Array();
        }        //是否包括某个key值
        function hashtable_containsKey(key)
        {
            var exists = false;
            for (var i in this.hashtable) 
            {
                if (i == key && this.hashtable[i] != null) 
                {
                    exists = true;
                    break;
                }
            }
            return exists;
        }        //是否包括某个value值
        function hashtable_containsValue(value)
        {
            var contains = false;
            if (value != null) 
            {
                for (var i in this.hashtable) 
                {
                    if (this.hashtable[i] == value) 
                    {
                        contains = true;
                        break;
                    }
                }
            }
            return contains;
        }
        
        //获取某个key对应的value值
        function hashtable_get(key)
        {
            return this.hashtable[key];
        }        function hashtable_isEmpty()
        {
            return (parseInt(this.size()) == 0) ? true : false;
        }        function hashtable_keys()
        {
            var keys = new Array();
            for (var i in this.hashtable) 
            {
                if (this.hashtable[i] != null)
                keys.push(i);
            }
            return keys;
        }function hashtable_put(key, value){
    if (key == null || value == null) {
        throw "NullPointerException {" + key + "},{" + value + "}";
    }else{
        this.hashtable[key] = value;
    }
}function hashtable_remove(key){
    var rtn = this.hashtable[key];
    this.hashtable[key] = null;
    return rtn;
}function hashtable_size(){
    var size = 0;
    for (var i in this.hashtable) {
        if (this.hashtable[i] != null)
            size ++;
    }
    return size;
}function hashtable_toString(){
    var result = "";
    for (var i in this.hashtable)
    {     
        if (this.hashtable[i] != null)
            result += "{" + i + "},{" + this.hashtable[i] + "}\n";  
    }
    return result;
}function hashtable_values(){
    var values = new Array();
    for (var i in this.hashtable) {
        if (this.hashtable[i] != null)
            values.push(this.hashtable[i]);
    }
    return values;
}我现在用这个 hashTable  加一些东西 
如:
   var hashtable = new Hashtable();
   hashtable.put("1","test");
   这样没问题 可以加进入 
   var temp =  hashtable.get("1"); 是有值的 "test"
   
   但是一个值好说 取出即可。
   我现在在hashtable 中加入多个值。
   我现在想遍历这个hashtable  
 
      这里就有问题了 ,进不了 for循环,
      for(var i= 0; i < hashtable.size;i++)
      {
          //TODO:...             
      }
      我查看 var t = parseInt(hashtable.size);  这个t 是NaN  ,是无效的数值型。
     
      我该怎么遍历这个hashtable  呢?谢谢 ~!

解决方案 »

  1.   

    hashtable.size 返回的是function()么? 还是object ? 
      

  2.   


    用下面的遍历这个hashtable
            for   (var   i   in   hashtable)   {
                    if   (hashtable[i]   !=   null)        }
      

  3.   


    for(int i =0 ; i < hashTable.count ; i ++) 

     }
    试一试 
      

  4.   

    Hashtable ht = new Hashtable();
    Iterator it=hr.keySet().Iterator();
    while(it.hasNext()){   
    System.out.println(hr.get(it.next()));
    }
      

  5.   

    TO:TIAN_930 这个是JS 的我想得到某个KEY对应的Value
      

  6.   

      for (var  i   in   hashtable.keys)       
         {
               if   (hashtable[i]       !=       null)
              {
                  if(hashtable[i] == 我的value值)
                    {
                       。
                   }
              }  }
    不进这个循环 
    for (var  i   in   hashtable)       
     {
           if   (hashtable[i]       !=       null)
            {
               if(hashtable[i] == 我的value值) //这样可以进去 但是这里为假
               {
                  ...
               }
            }
     }    var 我的value值=  hashtable.get(某个KEY); 这个值是存在的  但是上面为假
      

  7.   

    for   (var     i       in       hashtable)              
      {
                  if       (hashtable[i]               !=               null)
                    {
                           var d = hashtable[i] ; 这里是个函数好像  我看d 值是{...}  谁能帮帮我
                          if(hashtable[i]   ==   我的value值)   
                          {
                                ...
                          }
                    }
      } 
      

  8.   

    hashtable[i].ToString() 是以下的函数 居然 ,该怎么遍历呢"function hashtable_containsKey(key)
            {
                var exists = false;
                for (var i in this.hashtable) 
                {
                    if (i == key && this.hashtable[i] != null) 
                    {
                        exists = true;
                        break;
                    }
                }
                return exists;
            }"
      

  9.   

    楼上的用法我想应该是可以的,只是你用到了   this.size  变量,但在进行添加和移除清空时始终未对这个变量进行加一减一和清零的操作,所以元素自然在转成整型时为NaN型了,建议你仔细检查一下.对THIS.SIZE变量进行操作的地方!