call和apply的應(yīng)用

獲取數(shù)組最大值

    var ary = [12, 23, 34, 24, 35, 14, 25, 36];

    // 方法一:首先給數(shù)組從小到大排序,然后第一個是最小值郑兴,最后一個是最大值
    ary.sort(function (a, b) {
        return a - b;
    })
    var min = ary[0];
    var max = ary[ary.length - 1];
    console.log(min, max);

    // 方法二:假設(shè)法: 假設(shè)當前數(shù)組中的第一個值是最大值犀斋,然后拿這個值后面項逐一比較,如果后面某一個值比假設(shè)的還要大情连,說明假設(shè)錯了叽粹,這樣就把假設(shè)的值進行替換,使其成為新的最大值。
    // -> 這種方法和自定義屬性一樣虫几,都是JavaScript中最常用的編程思想
    var max = ary[0];
    var min = ary[0];
    for (var i = 1; i < ary.length; i++) {
        var cur = ary[i];
        if (cur > max) {
            max = cur;
        }
        if (cur < min) {
            min = cur;
        }
    }
    console.log(min, max);

    // 方法三:使用Math.max和Math.min方法實現(xiàn)
    // 它們是在執(zhí)行的時候锤灿,把需要比較的那堆數(shù)一個個的傳遞進來,這樣擦可以得到最后的結(jié)果持钉,
    // 一下子放一個ary數(shù)組是不可以的
    // console.log(Math.min(ary));
    // console.log(Math.max(ary));

    // -> 第一次嘗試
    console.log(Math.min([12, 23, 34, 24, 35, 14, 25, 36]));
    // -> join/toString: 將這個數(shù)組轉(zhuǎn)化為 -> "12, 23, 34, 24, 35, 14, 25, 36"
    // -> eval: 把一個字符串轉(zhuǎn)變?yōu)镴avaScript表達式執(zhí)行
    // 例如: eval("1+1") -> 2
    // eval("12, 23, 34, 24, 35, 14, 25, 36"); -> 只取出了最后一項的值
    console.log(Math.min(12, 23, 34, 24, 35, 14, 25, 36));
    console.log(Math.max(12, 23, 34, 24, 35, 14, 25, 36));

    // 第二次嘗試:
    console.log(eval("Math.max(" + ary.toString() + ");"));

    // 第三次嘗試
    var max = Math.max.apply(null, ary);
    var min = Math.min.apply(null, ary);
    console.log(max, min);

取平均值

  // 類數(shù)組轉(zhuǎn)化為數(shù)組以及類數(shù)組借用數(shù)組方法的各種方式:

    // -> 模擬內(nèi)置的slice實現(xiàn)數(shù)組克隆的功能
    Array.prototype.mySlice = function () {
        // this -> 當前要操作的這個數(shù)組ary
        var ary = [];
        for (var i = 0; i < this.length; i++) {
            ary[ary.length] = this[i];
        }
        return ary;
    }
    // arguments.sort(); -> 報錯衡招,TypeError, arguments是類數(shù)組集合,它不是數(shù)組每强,不能直接使用數(shù)組的方法
    function avgFn() {
        // 1. 將類數(shù)組轉(zhuǎn)換為數(shù)組: 把arguments克隆一份一模一樣的數(shù)組出來
        var ary = [];
        for (var i = 0; i < arguments.length; i++) {
            ary[ary.length] = arguments[i];
        }

        // 1. 將類數(shù)組轉(zhuǎn)換為數(shù)組(優(yōu)化版)
        // -> 借用數(shù)組原型上的slice方法始腾,當slice執(zhí)行的時候,讓方法中的this變?yōu)橄胍幚淼腶rguments空执,實現(xiàn)將類數(shù)組arguments轉(zhuǎn)化為數(shù)組
        var ary = Array.prototype.slice.call(arguments);
        // 或者
        // var ary = [].prototype.slice.call(arguments);

        // 2. 給數(shù)組排序浪箭,去掉開頭和結(jié)尾,剩下的是求平均數(shù)
        ary.sort(function (a, b) {
            return a - b;
        });

        ary.shift();
        ary.pop();

        // 2. 給數(shù)組排序辨绊,去掉開頭和結(jié)尾奶栖,剩下的是求平均數(shù)(優(yōu)化版)
        Array.prototype.sort.call(arguments, function (a, b) {
            return a - b;
        });
        [].prototype.shift.call(arguments);
        [].prototype.pop.call(arguments);

        return (eval(ary.join("+")) / ary.length).toFixed(2);

        // return 優(yōu)化
        return (eval([].join.call(arguments, "+")) / arguments.length).toFixed(2);
    }

    avgFn(9.8, 9.7, 10, 9.9, 9.0, 9.8, 3.0);

類數(shù)組轉(zhuǎn)換為數(shù)組

    var oLis = document.getElementsByTagName('div');
    console.dir(oLis); // -> HTMLCollection元素集合類的一個實例 -> 它也是一個類數(shù)組集合

    oLis = document.getElementsByName('nameVale');
    console.dir(oLis); // -> NodeList節(jié)點集合 -> 它也是一個類數(shù)組集合

    // 把元素集合轉(zhuǎn)換為數(shù)組
    // -> 標準瀏覽器
    var ary = Array.prototype.slice.call(oLis);
    console.log(ary);
    // -> 在IE6-8中,不支持借助數(shù)組的slice實現(xiàn)將元素集合或者節(jié)點集合的類數(shù)組轉(zhuǎn)換為數(shù)組
    // -> 但是對于arguments借用數(shù)組的方法是不存在任何兼容性問題

    // 非標準瀏覽器下解決方案
    var ary = [];
    for (var i = 0; i < oLis.length; i++) {
        ary[ary.length] = oLis[i];
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末门坷,一起剝皮案震驚了整個濱河市宣鄙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌默蚌,老刑警劉巖冻晤,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绸吸,居然都是意外死亡鼻弧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門锦茁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攘轩,“玉大人,你說我怎么就攤上這事码俩《劝铮” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵稿存,是天一觀的道長够傍。 經(jīng)常有香客問我,道長挠铲,這世上最難降的妖魔是什么冕屯? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拂苹,結(jié)果婚禮上安聘,老公的妹妹穿的比我還像新娘痰洒。我一直安慰自己,他們只是感情好浴韭,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布丘喻。 她就那樣靜靜地躺著,像睡著了一般念颈。 火紅的嫁衣襯著肌膚如雪泉粉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天榴芳,我揣著相機與錄音嗡靡,去河邊找鬼。 笑死窟感,一個胖子當著我的面吹牛讨彼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柿祈,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哈误,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躏嚎?” 一聲冷哼從身側(cè)響起蜜自,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卢佣,沒想到半個月后重荠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡珠漂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年晚缩,在試婚紗的時候發(fā)現(xiàn)自己被綠了尾膊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媳危。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冈敛,靈堂內(nèi)的尸體忽然破棺而出待笑,到底是詐尸還是另有隱情,我是刑警寧澤抓谴,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布暮蹂,位于F島的核電站,受9級特大地震影響癌压,放射性物質(zhì)發(fā)生泄漏仰泻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一滩届、第九天 我趴在偏房一處隱蔽的房頂上張望集侯。 院中可真熱鬧,春花似錦、人聲如沸棠枉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辈讶。三九已至命浴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贱除,已是汗流浹背生闲。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勘伺,地道東北人跪腹。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像飞醉,于是被迫代替她去往敵國和親冲茸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理缅帘,服務(wù)發(fā)現(xiàn)轴术,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,970評論 6 13
  • 來源:NumPy Tutorial - TutorialsPoint 譯者:飛龍 協(xié)議:CC BY-NC-SA 4...
    布客飛龍閱讀 32,793評論 6 96
  • 首頁 資訊 文章 資源 小組 相親 登錄 注冊 首頁 最新文章 IT 職場 前端 后端 移動端 數(shù)據(jù)庫 運維 其他...
    Helen_Cat閱讀 3,874評論 1 10
  • 你的眼睛會說話 像是曾經(jīng)養(yǎng)過的布谷 “布谷钦无,布谷” 你的背影會發(fā)光 像是自帶柔光 “buling bulking”...
    囿于江河湖海閱讀 154評論 0 1