js數組Array方法

創建數組

var arr = new Array()
var arr = []

arr.length---

title: js正則表達式
categories:

  • javascript
    date: 2016-11-21 12:26:38
    tags: javascript

array.length

返回一個數組的長度

可以通過減小 length 屬性的值來截短一個數組,但不能通過增大 length 屬性的值來延長這個數組,也就是說,如果你將一個擁有兩個元素的數組的 length 屬性設置為 3,那么這個數組仍然只包含兩個元素,最后一個元素不存在。因此, length屬性不能真正表示數組中定義的值的數目。

arr.indexOf()

arr.indexOf(searchElement[, fromIndex = 0])
  • 參數
    • searchElement
      • 要查找的元素
    • fromIndex
      *開始查找的位置。如果該索引值大于或等于數組長度,意味著不會在數組里查找,返回-1。如果參數中提供的索引值是一個負值,則將其作為數組末尾的一個抵消,即-1表示從最后一個元素開始查找,-2表示從倒數第二個元素開始查找 ,以此類推。 注意:如果參數中提供的索引值是一個負值,仍然從前向后查詢數組。如果抵消后的索引值仍小于0,則整個數組都將會被查詢。其默認值為0.
  • 返回值
    • 首個被找到的元素在數組中的索引位置; 若沒有找到則返回 -1

arr.forEach()

array.forEach(callback[, thisArg])
  • 參數
    • callback
      • 函數為每個元素執行,接收三個參數:
    • currentValue(當前值)
      • 數組中正在處理的當前元素。
    • index(索引)
      • 數組中正在處理的當前元素的索引。
    • array
      • 正在應用forEach()數組。。
    • thisArg可選
      • 可選參數。當執行回調 函數時用作this的值(參考對象)。
  • 描述
    • forEach 方法按升序為數組中含有效值的每一項執行一次callback 函數,那些已刪除(使用delete方法等情況)或者從未賦值的項將被跳過(但不包括那些值為 undefined 的項)。
    • callback 函數會被依次傳入三個參數:
      • 數組當前項的值
      • 數組當前項的索引
      • 數組對象本身
    • 如果給forEach傳遞了thisArg 參數,它將作為 callback 函數的執行上下文,類似執行如下函數callback.call(thisArg, element, index, array)。如果 thisArg 值為 undefined 或 null,函數的 this 值取決于當前執行環境是否為嚴格模式(嚴格模式下為 undefined,非嚴格模式下為全局對象)。

forEach 遍歷的范圍在第一次調用 callback 前就會確定。調用forEach 后添加到數組中的項不會被 callback 訪問到。如果已經存在的值被改變,則傳遞給 callback 的值是 forEach 遍歷到他們那一刻的值。已刪除的項不會被遍歷到。

arr.reverse()

arr.reverse()
  • 描述
    • reverse 方法顛倒數組中元素的位置,并返回該數組的引用。
    • 修改原數組

arr.sort()

arr.sort([compareFunction])
  • 參數
    • compareFunction
      • 可選。用來指定按某種順序進行排列的函數。如果省略,元素按照轉換為的字符串的諸個字符的Unicode位點進行排序。

如果指明了 compareFunction ,那么數組會按照調用該函數的返回值排序。記 a 和 b 是兩個將要被比較的元素:

  • 如果 compareFunction(a, b) 小于 0 ,那么 a 會被排列到 b 之前;
  • 如果 compareFunction(a, b) 等于 0 , a 和 b 的相對位置不變。備注: ECMAScript 標準并不保證這一行為,而且也不是所有瀏覽器都會遵守(例如 Mozilla 在 2003 年之前的版本);
  • 如果 compareFunction(a, b) 大于 0 , b 會被排列到 a 之前。
  • compareFunction(a, b) 必須總是對相同的輸入返回相同的比較結果,否則排序的結果將是不確定的。

arr.push()

arr.push(element1, ..., elementN)

添加一個或多個元素到數組的末尾,并返回數組新的長度(length 屬性值)。

  • 參數
    • elementN
      • 被添加到數組末尾的元素。
  • 返回值
    • 當調用該方法時,新的 length 屬性值將被返回。
  • 描述
    • push 方法把值添加到數組中。

push 方法有意具有通用性。該方法和 call() 或 apply() 一起使用時,可應用在類似數組的對象上。push 方法根據 length 屬性來決定從哪里開始插入給定的值。如果 length 不能被轉成一個數值,則插入的元素索引為 0,包括 length 不存在時。當 length 不存在時,將會創建它。

arr.unshift()

arr.unshift(element1, ..., elementN)

法在數組的開頭添加一個或者多個元素,并返回數組新的 length 值。

  • 參數

    • elementN
      • 被添加到數組開頭的元素。
  • 返回值

    • 當調用該方法時,新的 length 屬性值將被返回。
  • 描述

    • unshift 方法會在調用它的類數組(array-like)對象的開始位置插入給定的參數。

unshift 特意被設計成具有通用性;這個方法能夠通過 call 或 apply 方法作用于類似數組的對象上。不過對于沒有 length 屬性(代表從0開始的一系列連續的數字屬性的最后一個)的對象,調用該方法可能沒有任何意義。

arr.shift()

arr.shift

刪除數組的第一個元素并返回

  • 描述
    • shift 方法移除索引為 0 的元素(即第一個元素),并返回被移除的元素,其他元素的索引值隨之減 1。如果 length 屬性的值為 0 (長度為 0),則返回 undefined。

    • shift 方法并不局限于數組:該方法亦可通過 call 或 apply 作用于對象上。對于不包含 length 屬性的對象,將添加一個值為 0 的 length 屬性。

arr.pop()

array.pop()

刪除數組的最后一個元素并返回

  • 描述
    • pop 方法刪除一個數組中的最后一個元素,并且把這個刪除掉的元素返回給調用者。

    • pop 被有意設計成具有通用性,該方法可以通過 call 或 apply 方法應用于一個類數組(array-like)對象上。

arr.splice()

array.splice(start, deleteCount[, item1[, item2[, ...]]])
  • 參數

    • start?
      • 從數組的哪一位開始修改內容。如果超出了數組的長度,則從數組末尾開始添加內容;如果是負值,則表示從數組末位開始的第幾位。
    • deleteCount
      • 整數,表示要移除的數組元素的個數。如果 deleteCount 是 0,則不移除元素。這種情況下,至少應添加一個新元素。如果 deleteCount 大于start 之后的元素的總數,則從 start 后面的元素都將被刪除(含第 start 位)。
    • itemN
      • 要添加進數組的元素。如果不指定,則 splice() 只刪除數組元素。
  • 返回值

    • 由被刪除的元素組成的一個數組。如果只刪除了一個元素,則返回只包含一個元素的數組。如果沒有刪除元素,則返回空數組。
  • 描述

    • 如果添加進數組的元素個數不等于被刪除的元素個數,數組的長度會發生相應的改變。

注釋:請注意,splice() 方法與 slice() 方法的作用是不同的,splice() 方法會直接對數組進行修改。


arr.slice()

arr.slice(begin[,edn])
  • 參數
    • begin
      • 從該索引處開始提取原數組中的元素(從0開始)。
      • 如果該參數為負數,則表示從原數組中的倒數第幾個元素開始提取,slice(-2)表示提取原數組中的倒數第二個元素到最后一個元素(包含最后一個元素)。
      • 如果省略 begin,則 slice 從索引 0 開始。
    • end
      • 在該索引處結束提取原數組元素(從0開始)。slice會提取原數組中索引從 begin 到 end 的所有元素(包含begin,但不包含end)
      • slice(1,4) 提取原數組中的第二個元素開始直到第四個元素的所有元素 (索引為 1, 2, 3的元素)。
      • 如果該參數為負數, 則它表示在原數組中的倒數第幾個元素結束抽取。 slice(-2,-1)表示抽取了原數組中的倒數第二個元素到最后一個元素(不包含最后一個元素,也就是只有倒數第二個元素)。
      • 如果 end 被省略,則slice 會一直提取到原數組末尾。
  • 返回值
    • 一個含有提取元素的新數組
  • 描述
    • slice 不修改原數組,只會返回一個淺復制了原數組中的元素的一個新數組。原數組的元素會按照下述規則拷貝:

      • 如果該元素是個對象引用 (不是實際的對象),slice 會拷貝這個對象引用到新的數組里。兩個對象引用都引用了同一個對象。如果被引用的對象發生改變,則新的和原來的數組中的這個元素也會發生改變。
      • 對于字符串、數字及布爾值來說(不是 String、Number 或者 Boolean 對象),slice 會拷貝這些值到新的數組里。在別的數組里修改這些字符串或數字或是布爾值,將不會影響另一個數組。
    • 如果向兩個數組任一中添加了新元素,則另一個不會受到影響。

arr.concat()

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
  • 參數
    • valueN
      • 需要與原數組合并的數組或非數組值。詳見下文。
  • 返回值
    • 新的 Array 實例。
  • 描述
    • concat 方法將創建一個新的數組,然后將調用它的對象(this 指向的對象)中的元素以及所有參數中的數組類型的參數中的元素以及非數組類型的參數本身按照順序放入這個新數組,并返回該數組.

    • concat 方法并不修改調用它的對象(this 指向的對象) 和參數中的各個數組本身的值,而是將他們的每個元素拷貝一份放在組合成的新數組中.原數組中的元素有兩種被拷貝的方式:

      • 對象引用(非對象直接量):concat 方法會復制對象引用放到組合的新數組里,原數組和新數組中的對象引用都指向同一個實際的對象,所以,當實際的對象被修改時,兩個數組也同時會被修改.
      • 字符串和數字(是原始值,而不是包裝原始值的 String 和 Number 對象): concat 方法會復制字符串和數字的值放到新數組里.

arr.join()

str = arr.join([separator = ','])

join() 方法將數組中的所有元素連接成一個字符串。

  • 參數
    • separator
      • 可選,用于指定連接每個數組元素的分隔符。分隔符會被轉成字符串類型;如果省略的話,默認為一個逗號。如果 seprator 是一個空字符串,那么數組中的所有元素將被直接連接。
  • 描述
    • 所有的數組元素被轉換成字符串,再用一個分隔符將這些字符串連接起來。如果元素是undefined 或者null, 則會轉化成空字符串。

arr.map()

array.map(callback[, thisArg])
  • 參數

    • callback
      • 原數組中的元素經過該方法后返回一個新的元素。
      • currentValue
        • callback 的第一個參數,數組中當前被傳遞的元素。
      • index
        • callback 的第二個參數,數組中當前被傳遞的元素的索引。
      • array
        • callback 的第三個參數,調用 map 方法的數組。
    • thisArg
      • 執行 callback 函數時 this 指向的對象。
  • 返回值

    • 由回調函數的返回值組成的新數組。
  • 描述

    • map 方法會給原數組中的每個元素都按順序調用一次 callback 函數。callback 每次執行后的返回值(包括 undefined)組合起來形成一個新數組。 callback 函數只會在有值的索引上被調用;那些從來沒被賦過值或者使用 delete 刪除的索引則不會被調用。

    • callback 函數會被自動傳入三個參數:數組元素,元素索引,原數組本身。

    • 如果 thisArg 參數有值,則每次 callback 函數被調用的時候,this 都會指向 thisArg 參數上的這個對象。如果省略了 thisArg 參數,或者賦值為 null 或 undefined,則 this 指向全局對象 。

    • map 不修改調用它的原數組本身(當然可以在 callback 執行時改變原數組)。

    • 使用 map 方法處理數組時,數組元素的范圍是在 callback 方法第一次調用之前就已經確定了。在 map 方法執行的過程中:原數組中新增加的元素將不會被 callback 訪問到;若已經存在的元素被改變或刪除了,則它們的傳遞到 callback 的值是 map 方法遍歷到它們的那一時刻的值;而被刪除的元素將不會被訪問到。

arr.reduce()

arr.reduce(callback,[initialValue])

接收一個函數作為累加器(accumulator),數組中的每個值(從左到右)開始合并,最終為一個值。

  • 參數

    • callback
      • 執行數組中每個值的函數,包含四個參數
      • previousValue
        • 上一次調用回調返回的值,或者是提供的初始值(initialValue)
      • currentValue
        • 數組中當前被處理的元素
      • index
        • 當前元素在數組中的索引
      • array
        • 調用 reduce 的數組
    • initialValue
      • 作為第一次調用 callback 的第一個參數。
  • 描述

    • reduce 為數組中的每一個元素依次執行回調函數,不包括數組中被刪除或從未被賦值的元素,接受四個參數:初始值(或者上一次回調函數的返回值),當前元素值,當前索引,調用 reduce 的數組。

    • 回調函數第一次執行時,previousValue 和 currentValue 的取值有兩種情況,如果 initialValue 在調用 reduce 時被提供,那么第一個 previousValue 等于 initialValue ,并且currentValue 等于數組中的第一個值;如果initialValue 未被提供,那么previousValue 等于數組中的第一個值,currentValue等于數組中的第二個值。

    • 如果數組為空并且沒有提供initialValue, 會拋出TypeError 。如果數組僅有一個元素(無論位置如何)并且沒有提供initialValue, 或者有提供initialValue但是數組為空,那么此唯一值將被返回并且callback不會被執行。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容