咖啡伴侶

          呆在上海
          posts - 163, comments - 156, trackbacks - 0, articles - 2

          導(dǎo)航

          公告

          呆在上海 

          Java,F(xiàn)lex,Android,SVG等技術(shù)的 圖形UI

          Email:leooath@gmail.com

          QQ:35339893


          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          JS Map 總結(jié)

          Posted on 2009-06-18 16:12 oathleo 閱讀(7935) 評論(3)  編輯  收藏 所屬分類: Web
          js 里 Object本身可以做為Map。
          條件是Key只能是String

          如果要用對象做為Key,這個Map可以來實現(xiàn)。
          效率上由于_getIndex方法每次都要遍歷,耗時很長,所以通常在1:10左右

          總結(jié)以上,如果Map的Key是String,最好還是用Object來實現(xiàn)。
          而且用in來遍歷Map,效率上不是網(wǎng)上說的那么差,和for()差不多

          TWaver.Map = function(){
          ??? this._entrys = null;
          ??? this.initialize.apply(this, arguments);
          }

          TWaver.Map.prototype = {
          ??? initialize: function(){
          ??????? this._entrys = new Array();
          ??? },
          ??? put: function(key, value){
          ??????? if (key == null || key == undefined) {
          ??????????? return;
          ??????? }
          ??????? var index = this._getIndex(key);
          ??????? if (index == -1) {
          ??????????? var entry = new Object();
          ??????????? entry.key = key;
          ??????????? entry.value = value;
          ??????????? this._entrys[this._entrys.length] = entry;
          ??????? }else{
          ??? ??? ??? this._entrys[index].value = value;
          ??? ??? }??? ???
          ??? },
          ??? get: function(key){
          ??????? var index = this._getIndex(key);
          ??????? return (index != -1) ? this._entrys[index].value : null;
          ??? },
          ??? remove: function(key){
          ??????? var index = this._getIndex(key);
          ??????? if (index != -1) {
          ??????????? this._entrys.splice(index, 1);
          ??????? }
          ??? },
          ??? clear: function(){
          ??? ??? this._entrys.length = 0;;
          ??? },
          ??? contains: function(key){
          ??????? var index = this._getIndex(key);
          ??????? return (index != -1) ? true : false;
          ??? },
          ??? getCount: function(){
          ??????? return this._entrys.length;
          ??? },
          ??? getEntrys: function(){
          ??????? return this._entrys;
          ??? },
          ??? _getIndex: function(key){
          ??????? if (key == null || key == undefined) {
          ??????????? return -1;
          ??????? }
          ??????? var _length = this._entrys.length;
          ??????? for (var i = 0; i < _length; i++) {
          ??????????? var entry = this._entrys[i];
          ??????????? if (entry == null || entry == undefined) {
          ??????????????? continue;
          ??????????? }
          ??????????? if (entry.key === key) {//equal
          ??????????????? return i;
          ??????????? }
          ??????? }
          ??????? return -1;
          ??? }
          }


          Feedback

          # re: JS Map 總結(jié)  回復(fù)  更多評論   

          2009-06-19 12:24 by 找個美女做老婆
          這個還是第一次聽說,KEY 是STRING的時候,為什么要用OBJECT呢?那如果不是STRING,效率有怎么樣呢?

          Java樂園 技術(shù)交流社區(qū):http://www.javaly.cn
          Java樂園 群號:15651281
          驗證消息 : Java樂園

          # re: JS Map 總結(jié)[未登錄]  回復(fù)  更多評論   

          2009-06-19 14:43 by King
          汗,js需要map嗎?不用這么復(fù)雜吧

          # re: JS Map 總結(jié)  回復(fù)  更多評論   

          2009-06-22 10:12 by oathleo
          如果是自定義對象做Key,Object put進(jìn)去 Key自動變成String。
          好像也沒有找到更好的辦法,有誰有更好的辦法?
          (限制純js)
          主站蜘蛛池模板: 梁河县| 肥西县| 岳阳市| 喀喇沁旗| 和政县| 崇义县| 荆门市| 通江县| 新田县| 万安县| 绥宁县| 望奎县| 广宗县| 廉江市| 涡阳县| 遵义县| 滁州市| 赫章县| 泰来县| 贞丰县| 长宁区| 博爱县| 塔城市| 偏关县| 莱芜市| 恩施市| 蒲城县| 宜兰市| 磴口县| 汾阳市| 金湖县| 凤阳县| 莱阳市| 临海市| 漳平市| 宣化县| 班玛县| 孝昌县| 江西省| 教育| 神木县|