<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    咖啡伴侶

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

    JS Map 總結

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

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

    總結以上,如果Map的Key是String,最好還是用Object來實現。
    而且用in來遍歷Map,效率上不是網上說的那么差,和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 總結  回復  更多評論   

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

    Java樂園 技術交流社區:http://www.javaly.cn
    Java樂園 群號:15651281
    驗證消息 : Java樂園

    # re: JS Map 總結[未登錄]  回復  更多評論   

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

    # re: JS Map 總結  回復  更多評論   

    2009-06-22 10:12 by oathleo
    如果是自定義對象做Key,Object put進去 Key自動變成String。
    好像也沒有找到更好的辦法,有誰有更好的辦法?
    (限制純js)
    主站蜘蛛池模板: 亚洲av网址在线观看| 亚洲精品在线视频| 亚洲国产精品日韩在线| 99在线在线视频免费视频观看| 国产gv天堂亚洲国产gv刚刚碰| 一级看片免费视频囗交| 久久亚洲国产成人影院网站 | yy6080久久亚洲精品| 亚洲精华液一二三产区| 国产一级高清免费观看| 另类专区另类专区亚洲| 亚洲精品国产高清嫩草影院| 亚欧洲精品在线视频免费观看 | 免费女人高潮流视频在线观看| 亚洲AV无码精品无码麻豆| 久久久久国产免费| 亚洲精品视频在线免费| 国产在线观看免费观看不卡| 亚洲国产激情在线一区| 免费看小12萝裸体视频国产| 有码人妻在线免费看片| 亚洲gv白嫩小受在线观看| 在线观看免费视频资源| 亚洲精品无AMM毛片| 亚洲精品第一国产综合精品99| 国产麻豆一精品一AV一免费| 亚洲精品国产情侣av在线| 成年美女黄网站色大免费视频| 美女黄频免费网站| 亚洲AV无码一区二区乱子伦| 嘿嘿嘿视频免费网站在线观看| 亚洲成a∨人片在无码2023 | 久久久久高潮毛片免费全部播放| 亚洲天堂一区二区三区四区| 日韩毛片免费在线观看| 91成人免费福利网站在线| 亚洲三级视频在线| 免费a在线观看播放| 性色午夜视频免费男人的天堂| 亚洲一区二区三区在线观看网站| 精品国产亚洲男女在线线电影 |