<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 總結(jié)

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

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

    總結(jié)以上,如果Map的Key是String,最好還是用Object來(lái)實(shí)現(xiàn)。
    而且用in來(lái)遍歷Map,效率上不是網(wǎng)上說(shuō)的那么差,和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ù)  更多評(píng)論   

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

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

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

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

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

    2009-06-22 10:12 by oathleo
    如果是自定義對(duì)象做Key,Object put進(jìn)去 Key自動(dòng)變成String。
    好像也沒(méi)有找到更好的辦法,有誰(shuí)有更好的辦法?
    (限制純js)
    主站蜘蛛池模板: 国产免费卡一卡三卡乱码| 91av在线免费视频| 一级特黄特色的免费大片视频| 亚洲av第一网站久章草| 亚洲AV无码专区在线观看成人| 久久久久国产精品免费看| 久久青草精品38国产免费| 国产92成人精品视频免费| 啦啦啦高清视频在线观看免费| 日本高清免费中文字幕不卡| 亚洲AV永久无码精品一区二区国产 | 亚洲AV无码成人专区| 久久精品国产亚洲av麻豆蜜芽 | 亚洲春黄在线观看| 国产亚洲蜜芽精品久久| 一个人免费观看www视频| 巨胸喷奶水视频www网免费| 亚洲一区二区视频在线观看| 亚洲2022国产成人精品无码区| 久久精品国产亚洲AV无码娇色| 亚洲乱码一二三四区乱码| 日韩精品免费一线在线观看| 免费一级毛片无毒不卡| 成人性生交大片免费看午夜a| 中文字幕亚洲一区二区va在线| 亚洲五月激情综合图片区| 亚洲avav天堂av在线网毛片| 国产va免费精品观看精品 | 亚洲日韩欧洲乱码AV夜夜摸| 亚洲国产综合在线| 久99久精品免费视频热77| 亚洲日韩精品射精日| 成人免费一区二区三区 | 成年性生交大片免费看| 亚洲国产人成在线观看| 一个人晚上在线观看的免费视频| heyzo亚洲精品日韩| 久久狠狠高潮亚洲精品| 久久精品私人影院免费看| 久久精品国产96精品亚洲 | 日日AV拍夜夜添久久免费|