成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《javascript語言精粹》學(xué)習(xí)筆記 - 數(shù)組方法實(shí)現(xiàn)

felix0913 / 1646人閱讀

摘要:在中數(shù)組是經(jīng)常被使用到的,我們除了要學(xué)習(xí)數(shù)組的方法,還需要了解誒一下某一些方法是如何來實(shí)現(xiàn)的。然而我看了語言精粹中方法的一章,想記錄下書上的代碼,以便加深印象。方法移除數(shù)組中的第一個(gè)元素并且放回該元素。

js中數(shù)組是經(jīng)常被使用到的,我們除了要學(xué)習(xí)數(shù)組的方法,還需要了解誒一下某一些方法是如何來實(shí)現(xiàn)的。然而我看了《javascript語言精粹》中方法的一章,想記錄下書上的代碼,以便加深印象。

Array pop()

poppush方法使得數(shù)組可以從堆棧一樣工作。

Array.method("pop", function(){
    return this.splice(this.length - 1, 1)[0];
});
Array push()

push方法把一個(gè)或者多個(gè)的參數(shù)附加到一個(gè)數(shù)組的尾部。

Array.method("push", function(){
    this.splice.apply( this, [this.length, 0].concat(Array.prototype.slice.apply(arguments)));
    return this.length;
});
Array shift()

shift方法移除數(shù)組中的第一個(gè)元素并且放回該元素。

Array.method("shift", function(){
    return this.splice(0, 1)[0];
});
Array.unshift()

unshift方法像push一樣,用于把元素添加到數(shù)組中,但它是吧參數(shù)插入到數(shù)組開始部分而不是尾部。

Array.method("unshift", function(){
    this.splice.apply(this, [0, 0].concat(Array.prototype.slice.apply(arguments)));
    return this.length;
});
Array splice()

splice方法從數(shù)組中移除一個(gè)或者多個(gè)元素,并且用新的參數(shù)替換它們。

Array.method("splice", function(start, deleteCount){
    var max = Math.max,
        min = Math.min,
        delta, el, 
        insertCount = max(arguments.length - 2, 0),
        k = 0,
        len = this.length,
        new_len, result = [], shift_count;

    start = start || 0;
    if (start < 0) {
        start += len;
    }
    start = max(min(start, len), 0);
    deleteCount = max(min(typeof deleteCount === "number" ? deleteCount : len, len - start), 0);
    delta = insertCount - deleteCount;
    new_len = len + delta;
    while (k < deleteCount) {
        el = this[start + k];
        if (el !== undefined) {
            result[k] = el;
        }
        k += 1;
    }
    shift_count = len - start - deleteCount;
    if (delta < 0) {
        k = start = insertCount;
        while (shift_count) {
            this[k] = this[k - delta];
            k += 1;
            shift_count -= 1;
        }
        this.length = new_len;
    } else if (delta > 0) {
        k = 1;
        while (shift_count) {
            this[new_len - k] = this[len - k];
            k += 1;
            shift_count -= 1;
        }
        this.length = new_len;
    }
    for (k = 0; k < insertCount; k ++) {
        this[start + k] = arguments[k + 2];
    }
    return result;
});

這里只是摘抄了書上的一些實(shí)例,還有許多數(shù)組的方法可以思考如何去實(shí)現(xiàn),如果有什么不對的地方請指教,與大家共勉!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85601.html

相關(guān)文章

  • 【閱讀筆記javascript 語言精粹

    摘要:前言由于最近的項(xiàng)目用到了一些的代碼,所以我?guī)е闷嫘?,認(rèn)真閱讀了這本書,粗略地了解語言的基本結(jié)構(gòu)和特性,對于一些不熟悉的新概念,以記錄的形式加強(qiáng)印象,也是對學(xué)習(xí)的反思總結(jié)。 前言 由于最近的項(xiàng)目用到了一些js的代碼,所以我?guī)е闷嫘?,認(rèn)真閱讀了這本書,粗略地了解js語言的基本結(jié)構(gòu)和特性,對于一些不熟悉的新概念,以記錄的形式加強(qiáng)印象,也是對學(xué)習(xí)的反思總結(jié)。 一、字面量(literals...

    tangr206 評論0 收藏0
  • JavaScript 語言精粹》 讀書筆記 - 函數(shù)(二)

    摘要:對象被傳遞到從句中被捕獲。一些語言提供了尾遞歸優(yōu)化。這意味著如果一個(gè)函數(shù)返回自身遞歸調(diào)用的結(jié)果,那么調(diào)用的過程會(huì)被替換為一個(gè)循環(huán),可以顯著提高速度。構(gòu)建一個(gè)帶尾遞歸的函數(shù)。語言精粹讀書筆記函數(shù) 第四章 函數(shù) Functions (二) 參數(shù) arguments arguments數(shù)組: 函數(shù)可以通過此參數(shù)訪問所有它被調(diào)用時(shí)傳遞給它的參數(shù)列表,包括哪些沒有被分配給函數(shù)聲明時(shí)定義的形式參數(shù)...

    lufficc 評論0 收藏0
  • javascript語言精粹學(xué)習(xí)筆記 - 遞歸函數(shù)

    摘要:遞歸函數(shù)就是會(huì)直接或者間接地調(diào)用自身的一種函數(shù)。一般來說,一個(gè)遞歸函數(shù)調(diào)用自身去解決它的子問題。書上第二個(gè)例子是說遞歸函數(shù)可以非常高效率的操作樹形結(jié)構(gòu),比如。有一些語言提供了尾遞歸的優(yōu)化。好運(yùn)的是,給我們帶來了尾遞歸,詳細(xì)迎接使用尾遞歸。 遞歸函數(shù)就是會(huì)直接或者間接地調(diào)用自身的一種函數(shù)。遞歸是一種強(qiáng)大的編程技術(shù),它把一問題分解為一組相似的子問題,每一個(gè)都用一個(gè)尋常解去解決。一般來...

    Ryan_Li 評論0 收藏0
  • JavaScript 語言精粹》讀書筆記 - 函數(shù)

    摘要:語言精粹讀書筆記第四章函數(shù)函數(shù)字面量函數(shù)字面量包含個(gè)部分第一部分,保留字第二部分,函數(shù)名,它可以被忽略。這個(gè)超級(jí)延遲綁定使得函數(shù)對高度復(fù)用。構(gòu)造器調(diào)用模式一個(gè)函數(shù),如果創(chuàng)建的目的就是希望結(jié)合的前綴來調(diào)用,那它就被稱為構(gòu)造器構(gòu)造。 《JavaScript 語言精粹》 讀書筆記 第四章 函數(shù) Functions 函數(shù)字面量 函數(shù)字面量包含4個(gè)部分: 第一部分, 保留字 function...

    wdzgege 評論0 收藏0
  • javascript語言精粹學(xué)習(xí)筆記 - 對象

    摘要:對象適用于匯集和管理數(shù)據(jù)。一個(gè)對象字面量就是包圍在一對花括號(hào)的多個(gè)名值對。嘗試從對象里取值將會(huì)導(dǎo)致異常。亦不會(huì)觸及原型鏈中的任何對象。嚴(yán)格模式下,不能用刪除顯式聲明的標(biāo)識(shí)符,名稱或具名函數(shù)。 Javascirpt里的對象是無類型的。它對新屬性的名字和屬性的值沒有任何的限制。對象適用于匯集和管理數(shù)據(jù)。對象可以包括其他對象,所以它們可以容易地表示成樹狀或者圖形結(jié)構(gòu)。 對象字面量 ...

    LoftySoul 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<