摘要:如果傳遞給方法的是一或多個數組,則該方法會將這些數組中的每一項都添加到結果數組中。如果有兩個參數,該方法返回起始和結束位置之間的項,但不包括結束位置的項。為了實現排序,方法會調用每個數組項的轉型方法,然后比較得到的字符串,以確定如何排序。
將數組轉換成字符串
join()能夠將數組用指定的字符分割成字符串
方法 | 用法 | 變量的值 | 表達式的值 |
---|---|---|---|
假設 arr = [1,2,3] | |||
join | arr.join() | [1,2,3] | "1,2,3" |
- | arr.join(undefined) | [1,2,3] | "1,2,3" |
- | arr.join("-") | [1,2,3] | "1-2-3" |
- | arr.join(null) | [1,2,3] | "1null2null3" |
- | arr.join({}) | [1,2,3] | "1[object Object]2[object Object]3" |
結論:
1.不給 join()方法傳入任何值,或者給它傳入 undefined,則使用逗號作為分隔符;
2.join()會將傳入的參數隱式轉換成字符串形式
3.如果數組中的某一項的值是 null 或者 undefined,那么返回的結果中以空字符串表示,toString()也遵循該準則 [1,2,undefined,3].join() ==> "1,2,,3"
toString() / toLocaleString() 也能夠將數組轉換成字符串;
alert() 方法會隱式調用toString()方法
調用數組的 toString() 方法會返回由數組中每個值的字符串形式拼接而成的一個以逗號分隔的字符串;
當調用數組的 toLocaleString() 方法時,它也會創建一個數組值的以逗號分隔的字符串。而與之前方法唯一的不同之處在于,這一次為了取得每一項的值,調用的是每一項的 toLocaleString() 方法,而不是 toString() 方法,下面的例子可以解釋這一現象:
var person1 = { toLocaleString : function () { return "Nikolaos"; }, toString : function() { return "Nicholas"; } }; var person2 = { toLocaleString : function () { return "Grigorios"; }, toString : function() { return "Greg"; } }; var people = [person1, person2]; alert(people); alert(people.toString()); alert(people.toLocaleString()); //Nicholas,Greg //Nicholas,Greg //Nikolaos,Grigorios數組的增刪操作
1.堆棧方法
方法 | 用法 | 變量的值 | 表達式的值 |
---|---|---|---|
假設 arr = [1,2,3] | |||
push | arr.push(4,5) | [1,2,3,5] | 4 |
- | 接收任意數量的參數,把它們逐個添加到數組末尾,并返回修改后數組的長度 | ||
pop | arr.pop() | [1,2] | 3 |
- | arr.pop(123) | [1,2] | 3 |
- | 從數組末尾移除最后一項,減少數組的 length 值,然后返回移除的項(有參忽略) | ||
unshift | arr.unshift(4,5) | [4,5,1,2,3] | 5 |
- | 接收任意數量的參數,把它們逐個添加到數組首端,并返回修改后數組的長度 | ||
shift | arr.shift() | [2,3] | 1 |
- | 從數組首端移除第一項,減少數組的 length 值,然后返回移除的項(有參忽略) |
2.concat方法
concat()方法可以基于當前數組中的所有項創建一個新數組。具體來說,這個方法會先創建當前數組一個副本,然后將接收到的參數添加到這個副本的末尾,最后返回新構建的數組。
1.在沒有給 concat()方法傳遞參數的情況下,它只是復制當前數組并返回副本。
2.如果傳遞給 concat()方法的是一或多個數組,則該方法會將這些數組中的每一項都添加到結果數組中。
3.如果傳遞的值不是數組,這些值就會被簡單地添加到結果數組的末尾
4.arr === arr.concat() 為false
方法 | 用法 | 變量的值 | 表達式的值 |
---|---|---|---|
假設 arr = [1,2,3] | |||
concat | arr.concat() | [1,2,3] | [1,2,3] |
- | arr.concat(4,5) | [1,2,3] | [1,2,3,4,5] |
- | arr.concat(4,5,[6,7]) | [1,2,3] | [1,2,3,4,5,6,7] |
3.slice方法
slice()方法用于數組的截取,可以接受一或兩個參數,即要返回項的起始和結束位置;
1.沒有參數時,會創建一個副本,但arr !== arr.slice()
1.在只有一個參數的情況下,slice()方法返回從該參數指定位置開始到當前數組末尾的所有項。
2.如果有兩個參數,該方法返回起始和結束位置之間的項,但不包括結束位置的項。
3.如果 slice()方法的參數中有一個負數,則用數組長度加上該數來確定相應的位置。
4.如果結束位置小于起始位置,則返回空數組。
方法 | 用法 | 變量的值 | 表達式的值 |
---|---|---|---|
假設 arr = [1,2,3,4,5] | |||
slice | arr.slice() | [1,2,3,4,5] | [1,2,3,4,5] |
- | arr.slice(1) | [1,2,3,4,5] | [2,3,4,5] |
- | arr.slice(1,4) | [1,2,3,4,5] | [2,3,4] |
- | arr.slice(-2,-1) | [1,2,3,4,5] | [4] |
- | arr.slice(4,3) | [1,2,3,4,5] | [] |
4.splice方法
splice(刪除的第一項索引,刪除元素個數,插入的內容...)
splice()的主要用途是向數組的中部插入項,但使用這種方法的方式則有如下 3 種:
1.刪除:可以刪除任意數量的項,只需指定 2 個參數:要刪除的第一項的位置和要刪除的項數
2.插入:可以向指定位置插入任意數量的項,只需提供 3 個參數:起始位置、0(要刪除的項數)和要插入的項。如果要插入多個項,可以再傳入第四、第五,以至任意多個項
3.替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定 3 個參數:起始位置、要刪除的項數和要插入的任意數量的項。插入的項數不必與刪除的項數相等
splice()方法始終都會返回一個數組,該數組中包含從原始數組中刪除的項(如果沒有刪除任何 項,則返回一個空數組)
方法 | 用法 | 變量的值 | 表達式的值 |
---|---|---|---|
假設 arr = [1,2,3,4,5] | |||
splice | arr.splice() | [1,2,3,4,5] | [] |
- | arr.splice(1) | [2,3,4,5] | [1] |
- | arr.splice(1,2) | [1,4,5] | [2,3] |
- | arr.splice(-2,2) | [1,2,3] | [4,5] |
- | arr.splice(1,2,"a","b","c","插入") | [1,"a","b","c","插入",4,5] | [2,3] |
- | arr.splice(1,1,"替代") | [1,"替代",3,4,5] | [2] |
1.reverse()方法
數組反轉,數組自身改變,并返回反轉后的值
方法 | 用法 | 變量的值 | 表達式的值 |
---|---|---|---|
假設 arr = [1,2,3,4,5] | |||
reverse | arr.reverse() | [5,4,3,2,1] | [5,4,3,2,1] |
2.sort()方法
參考:js中sort()方法的用法,參數以及排序原理
在默認情況下(沒有參數),sort()方法按升序排列數組項——即最小的值位于最前面,最大的值排在最后面。 為了實現排序,sort()方法會調用每個數組項的 toString()轉型方法,然后比較得到的字符串,以確定如何排序。即使數組中的每一項都是數值,sort()方法比較的也是字符串
因此,會出現下面這種情況:
var arr1 = ["George", "John", "Thomas", "James", "Adrew", "Martin"]; arr.sort(); // ["Adrew", "George", "James", "John", "Martin", "Thomas"] var arr2 = ["10", "5", "40", "25", "1000", "1"]; arr.sort(); // ["1", "10", "1000", "25", "40", "5"]
如果想按照其他標準進行排序,就需要提供比較函數,該函數要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:
若 a 小于 b,在排序后的數組中 a 應該出現在 b 之前,則返回一個小于 0 的值。
若 a 等于 b,則返回 0。
若 a 大于 b,則返回一個大于 0 的值。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91403.html
摘要:如果網頁中包含多個框架,那實際上就存在兩個以上不同的全局執行環境,從而存在兩個以上不同版本的構造函數。如果你從一個框架向另一個框架傳入一個數組,那么傳入的數組與在第二個框架中原生創建的數組分別具有各自不同的構造函數。 如何檢測某個變量是否為數組? 《javascript 高級程序設計》原文摘錄: 自從 ECMAScript 3 做出規定以后,就出現了確定某個對象是不是數組的經典問題...
摘要:說明此摘要筆記系列是我最近看高級程序設計第版隨手所記。摘要筆記本身沒有系統性,沒有全面性可言,寫在這里供有一定基礎的前端開發者參考交流。對每一項運行給定函數,返回該函數會返回的項組成的數組。是的反操作是的反操作第一部分結束。 說明: 此摘要筆記系列是我最近看《JavaScript高級程序設計(第3版)》隨手所記。 里面分條列舉了一些我認為重要的、需要記下的、對我有幫助的點,是按照我看...
摘要:用于把對象序列化字符串,在序列化對象時,所有函數及原型成員都會被有意忽略,不體現在結果中。對第步返回的每個值進行相應的序列化。參考文檔高級程序設計作者以樂之名本文原創,有不當的地方歡迎指出。 showImg(https://segmentfault.com/img/bVburW1?w=658&h=494); JSON與JavaScript對象 JSON是一種表示結構化數據的存儲格式,語...
摘要:數組是數據的有序列表,與其他語言不同的是,數組的每一項可以保存任何類型的數據。如下的代碼創建的就是一個密集數組稀疏數組與密集數組相反,并不強制要求數組元素是緊密相連的,即允許間隙的存在。 數組是數據的有序列表,與其他語言不同的是,ECMAScript 數組的每一項可以保存任何類型的數據。也就是說,可以用數組的第一個位置來保存字符串,用第二位置來保存數值,用第三個位置來保存對象, 以此類...
摘要:為了每個對象都能通過來檢測,需要以或者的形式來調用,傳遞要檢查的對象作為第一個參數,稱為。對象都是動態的,這就意味著每次訪問對象,都會運行一次查詢。是語言中立的用于訪問和操作和文檔。 一、第三章 基本概念: 1.理解參數 1.1 可以向函數中傳遞任意數量的參數,并且可以通過arguments對象來訪問這些參數。 1.2 arguments對象只是類似數組,它通過length來確定傳進來...
摘要:上一篇你不知道的筆記寫在前面這是年第一篇博客,回顧去年年初列的學習清單,發現僅有部分完成了。當然,這并不影響年是向上的一年在新的城市穩定連續堅持健身三個月早睡早起游戲時間大大縮減,學會生活。 上一篇:《你不知道的javascript》筆記_this 寫在前面 這是2019年第一篇博客,回顧去年年初列的學習清單,發現僅有部分完成了。當然,這并不影響2018年是向上的一年:在新的城市穩定、...
閱讀 3885·2021-11-17 09:33
閱讀 1196·2021-10-09 09:44
閱讀 400·2019-08-30 13:59
閱讀 3478·2019-08-30 11:26
閱讀 2177·2019-08-29 16:56
閱讀 2849·2019-08-29 14:22
閱讀 3151·2019-08-29 12:11
閱讀 1269·2019-08-29 10:58