<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        js常用代碼段收集_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 21:01:17
        文檔

        js常用代碼段收集_javascript技巧

        js常用代碼段收集_javascript技巧:每段代碼前邊都有功能注解和參數要求等說明文字,難度不大也就沒做更多注釋。 為看得清楚,這里依先后順序做個小目錄: 重寫window.setTimeout, 理解遞歸程序的返回規律, 截取長字符串, 取得元素在頁面中的絕對位置, 統計、去除重復字符(多種方法實現)
        推薦度:
        導讀js常用代碼段收集_javascript技巧:每段代碼前邊都有功能注解和參數要求等說明文字,難度不大也就沒做更多注釋。 為看得清楚,這里依先后順序做個小目錄: 重寫window.setTimeout, 理解遞歸程序的返回規律, 截取長字符串, 取得元素在頁面中的絕對位置, 統計、去除重復字符(多種方法實現)

        每段代碼前邊都有功能注解和參數要求等說明文字,難度不大也就沒做更多注釋。 為看得清楚,這里依先后順序做個小目錄:
        重寫window.setTimeout,
        理解遞歸程序的返回規律,
        截取長字符串,
        取得元素在頁面中的絕對位置,
        統計、去除重復字符(多種方法實現),
        把有序的數組元素隨機打亂(多種方法實現)。

        代碼如下:
        /*
        功能:修改 window.setTimeout,使之可以傳遞參數和對象參數 (同樣可用于setInterval)
        使用方法: setTimeout(回調函數,時間,參數1,...,參數n) (FF已經原生支持,IE不支持)
        */
        var __sto = setTimeout;
        window.setTimeout = function(callback,timeout,param){
        var args = Array.prototype.slice.call(arguments,2);
        var _cb = function(){
        callback.apply(null,args);
        }
        __sto(_cb,timeout);
        }
        function aaaaa(a,b,c){
        alert(a + b + c);
        }
        window.setTimeout(aaaaa,2000,5,6,7);

        /**//*
        功能:理解遞歸程序的返回規律(從內到外)
        對象之間成員的互引用
        */
        var ninja = {
        yell: function(n){
        return n > 0 ? ninja.yell(n-1) + "a" : "hiy";
        }
        };
        alert(ninja.yell(4))//結果為:hiyaaaa;
        var samurai = { yell: ninja.yell };
        //var ninja = {}; // 此處 注釋與否 對結果有影響
        try {
        alert(samurai.yell(4));
        } catch(e){
        alert("Uh, this isn't good! Where'd ninja.yell go?" );
        }

        /** 功能:截取長字符串
        * @param {string} str 要截取的字符串
        * @param {number} size 截取長度(單字節長度)
        */
        var subStr = function(str, size){
        var curSize = 0, arr = [];
        for(var i = 0, len = str.length; i < len; i++){
        arr.push(str.charAt(i));
        if (str.charCodeAt(i) > 255){
        curSize += 2;
        if(size === curSize || size === curSize - 1){
        return arr.join('');
        }
        }else{
        curSize++;
        if(size === curSize){
        return arr.join('');
        }
        }
        }
        };
        var str = '#%*……&#什么東西1234abcd 還不夠長';
        alert(str.length);
        alert(str.substr(0, 15));
        alert(subStr(str, 15));

        /**//*
        功能:取得元素在頁面中的絕對位置(相對于頁面左上角)
        @param {string} node 待求位置的DOM元素
        */
        function getAbsPosition(node) {
        var t = node.offsetTop;
        var l = node.offsetLeft;
        while (node = node.offsetParent) {
        t += node.offsetTop;
        l += node.offsetLeft;
        }
        alert("top=" + t + "\n" + "left=" + l);
        }

        /**//*
        功能:統計、去除重復字符
        @param str 需要統計的字符串
        說明:常用于字符串中重復字符,或者數組中重復的字母、數字等個數統計。
        此處從網上收集兩種典型的類型,分別有兩種實現方法,其他還有許多變種,從不同角度編寫,可搜索學習。
        待統計的數據,不論是數組和字符串都可以,只用借助String.split()或 Array.join()
        轉換為函數參數要求的類型即可。
        */
        // 類型一:借助新建對象來保存數據
        var count1 = function (str) {
        var map = {}, maxCount = 0, maxChar, undefined, i = str.length;
        while (i--) {
        var t = str.charAt(i);
        map[t] == undefined ? map[t] = 1 : map[t] += 1;
        if (map[t] > maxCount) {
        maxChar = t;
        maxCount = map[maxChar];
        }
        }
        return "字符:" + maxChar + "次數:" + maxCount;
        }
        function s_0(a) { // 此處參數應為數組類型
        var b = {}, c = [], i;
        for (i = 0; i < a.length; i++){
        if (!b[a[i]]) {
        c[c.length] = a[i], b[a[i]] = true;
        }
        }
        return c;
        }
        // 類型二:正則表達式匹配統計
        var count2 = function (str) {
        var most = str.split('').sort().join('').match(/(.)\1*/g); //排列重復字符
        most = most.sort(function (a, b) { return a.length - b.length }).pop(); //按出現頻繁排序
        return most.length + ': ' + most[0];
        }
        function s_1(a) {
        var a = a.join(""), b = [];
        while (a.length > 0)
        a = a.replace(new RegExp((b[b.length] = a.charAt(0)), "g"), "");
        return b;
        }

        /**//*
        功能:把有序數組打亂(產生無序隨機數組)
        說明:基本的排序算法大家應該都很清楚。但是在編程中也經常用到相反的操作,即把原來有序的數組元素隨機打亂。
        以下給出三種方法,第一種是以前我自己寫出來的,由于水平差,寫出的代碼時間復雜度太大,
        于是從網上搜索一些簡單而且效率高的方法來。
        第二種據說是“洗牌算法”,想必很多人都聽說過;
        第三種是利用JS的內置sort方法,這種實現起來很簡單。
        */
        // 方法1(給大家做失敗的教訓借鑒)
        function randArray(num) {
        var rands = [];
        var ra = parseInt(num * Math.random());
        rands.push(ra);
        for (var r = 0; r < num - 1; r++) {
        ra = parseInt(num * Math.random());
        for (var m = 0; m < rands.length; m++) {
        while (rands[m] == ra) {
        ra = parseInt(num * Math.random());
        m = -1;
        }
        }
        rands.push(ra);
        }
        //alert(rands);
        return rands;
        }
        // 方法2:
        //選擇兩個[0...array.Length)之間的隨機數,把它們做下標的兩個元素交換位置(這樣亂序效率高)
        /* 說明:這是“洗牌算法” 有人證明打亂的效果如下:
        隨機交換nums/2次的效果很差,平均約1/3的對象還在原來的位置
        隨機交換nums次才基本可用,平均約15%的對象還在原來的位置
        隨機交換nums*2次才真正可用,平均約2%的對象還在原來的位置
        */
        function daluan(nums) {
        var array=[];
        for (var i = 0; i < nums; i++) {
        array[i] = i;
        }
        for (var i = 0; i < nums; i++) {
        var rand = parseInt(nums * Math.random());
        var temp = array[i];
        array[i] = array[rand];
        array[rand] = temp;
        }
        return array;
        }
        // 方法3:
        // 讓比較函數隨機傳回-1或1就可以了(這樣亂序效率可能不高)
        var testArray3=[1,2,3,4,5,6,7,8,9,10,22,33,55,77,88,99];
        testArray3.sort(function(){return Math.random()>0.5?-1:1;});
        alert(testArray3);

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        js常用代碼段收集_javascript技巧

        js常用代碼段收集_javascript技巧:每段代碼前邊都有功能注解和參數要求等說明文字,難度不大也就沒做更多注釋。 為看得清楚,這里依先后順序做個小目錄: 重寫window.setTimeout, 理解遞歸程序的返回規律, 截取長字符串, 取得元素在頁面中的絕對位置, 統計、去除重復字符(多種方法實現)
        推薦度:
        標簽: 常用 技巧 js
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲AV无码精品无码麻豆| 国产成人亚洲综合| 亚洲日产2021三区在线| 永久免费A∨片在线观看| 国精无码欧精品亚洲一区| 成人精品一区二区三区不卡免费看| 亚洲精品岛国片在线观看| 九九视频高清视频免费观看| 亚洲国产成人久久笫一页| 男女男精品网站免费观看| 亚洲色偷偷狠狠综合网| 国产午夜精品理论片免费观看| 精品久久香蕉国产线看观看亚洲| AAA日本高清在线播放免费观看| 亚洲精品乱码久久久久久久久久久久 | 嫩草影院在线免费观看| 午夜亚洲WWW湿好爽| 亚洲精品国产高清不卡在线| AAAAA级少妇高潮大片免费看| 久久精品国产精品亚洲艾 | 岛国大片免费在线观看| 免费一区二区无码视频在线播放| 伊人久久大香线蕉亚洲五月天| 久操视频在线免费观看| 亚洲免费视频播放| 国产一区二区视频免费| 99re6在线视频精品免费| 亚洲乱码中文论理电影| 四虎永久在线精品免费观看地址| 成在线人免费无码高潮喷水| 亚洲日韩在线视频| 亚洲AV无码不卡在线观看下载| baoyu116.永久免费视频| 亚洲一级毛片免费观看| 四虎精品亚洲一区二区三区| 午夜理伦剧场免费| 亚洲va中文字幕| 亚洲AV日韩AV天堂一区二区三区 | 亚洲乱码日产精品a级毛片久久| 99久久人妻精品免费二区| 亚洲爆乳少妇无码激情|