摘要:數組不接受參數,從數組末尾移除最后一項返回數組最后一項。隊列方法先進先出移除數組中的第一個項,并返回該項。接收任意個參數,在數組前添加任意個項并返回新數組的長度。基于當前數組中的一或多個項創建新數組,不會影響原來數組。
一. 定義方法
有兩種方式可以定義一個數組,
構造函數法使用Array構造函數創建數組,在使用Array構造函數時可以省略new操作符。
var arr = Array(); var arr = new Array(); // 創建一個空數組 var arr = Array(20); var arr = new Array(10); // 創建一個 length 長為 10 的數組 var arr = Array("1", "2", "3"); var arr = new Array("1", "2", "3"); // 創建一個包含該三項的數組對象字面量表示法
var arr=["1", "2", "3"];
注意:數組最多能夠包含4294967295個項
二. 數組檢測這篇文章有很詳細的說明。《在JavaScript中,如何判斷數組是數組?》
三. 數組方法 1.轉換方法所有對象都具有toString()、 toLocaleString()、 valueOf() 方法;要注意它們之間的區別
var a=[1,2]; console.log(a.toString()); console.log(a.toLocaleString());//1,2 console.log(a.valueOf()); //[1, 2]
valueOf:返回數組本身
toString():把數組轉換為字符串,并返回結果,每一項以逗號分割
toLocalString():結果與toString()返回的結果相同,但是調用的是toLocalString方法。
LocaleString()會根據你機器的本地環境來返回字符串,而toString()保持著統一的值。
var number = 1337; var date = new Date(); var myArr = [number, date, "foo"]; var str = myArr.toLocaleString(); console.log(str); //1337,2016/8/25 下午3:06:46,foo var number = 1337; var date = new Date(); var myArr = [number, date, "foo"]; var str = myArr.LocaleString()會根據你機器的本地環境來返回字符串; console.log(str); //1337,Thu Aug 25 2016 15:07:43 GMT+0800 (中國標準時間),foo
使用join()方法,可以設置分隔符
String.join("|");
備注:需要說明一下alert()方法接收字符串參數,在后臺調用toString()方法,但對于LocaleString()會調用LocaleString()方法。
2.棧方法棧(LIFO,后進先出)
a.push()接受任意數量的參數,逐個推入數組末尾,并返回修改后數組的長度。
var a=[1,2]; var b=a.push(3,4); console.log(b); //4 數組[1,2,3,4]b.pop()
不接受參數,從數組末尾移除最后一項,返回數組最后一項。
var a=[1,2]; var b=a.pop(); console.log(b); //23.隊列方法
LIFO(先進先出)
a.shift()移除數組中的第一個項,并返回該項。
var a=[1,2]; var b=a.shift(); console.log(b); //1b.unshift()
unshift() 接收任意個參數,在數組前添加任意個項并返回新數組的長度。備注:IE7及以下返回undefined。
var a=[1,2]; var b=a.unshift(3,4); console.log(b); //4, 數組為[3,4,1,2]4.重排序方法 a. sort()
使用時每個數組項調用自身toString()方法轉為字符串,再按字符編碼升序(非數值大小)排列數組項,因此會出現一種尷尬的事情:
var a=[1,2,3,10,5]; a.sort(); //[1, 10, 2, 3, 5],字符編碼排序,10排在1后面
這時我們可以傳入一個比較函數。
function compare(a,b){ if(ab){ return 1; }else{ return 0; } } var a=[1,2,3,10,5]; a.sort(compare); //[1, 2, 3, 5, 10]
對于數值類型或通過valueOf()方法返回數值類型的對象數組項,可以使用下面這個函數:
function compare(a,b){ return a-b; }b.reverse()
反轉數組。
var a=[1,2,3,10,5]; a.reverse(); //[5, 10, 3, 2, 1]5.操作方法 a.concat()
合并數組,傳入數組或者參數,不會影響原來的數組。
var a=[1,2,3,4,5]; var a1=[6,7] var b=a.concat(); var c=a.concat(a1); var d=a.concat(a1,8,9); console.log(a);//[1,2,3,4,5] console.log(b);//[1,2,3,4,5] console.log(c);//[1,2,3,4,5,6,7] console.log(d);//[1,2,3,4,5,6,7,8,9]b.slice()
基于當前數組中的一或多個項創建新數組,不會影響原來數組。
無參數:返回原數組
一個參數:返回從該參數指定位置開始到數組末尾的所有項
兩個參數:返回起始和結束之間的項
var a=[1,2,3,4,5]; var b=a.slice(); var c=a.slice(1); var d=d.slice(1,4); console.log(a);//[1,2,3,4,5] console.log(b);//[1,2,3,4,5] console.log(c);//[2,3,4,5] console.log(d);//[2,3,4]c.splice()
可以刪除、插入、替換;返回刪除的項組成的數組,對原數組造成影響
刪除:指定2個參數,要刪除的第一項的位置和要刪除的項數
var a=[1,2,3,4,5]; var b=a.splice(3,2); //a變為[1, 2, 3]
插入:提供3個參數,起始位置、0、要插入的項
var a=[1,2,3,4,5]; var b=a.splice(3,0,2); //a變為[1, 2, 3, 2, 4, 5]
替換:指定3個參數,起始位置、要刪除的項數、要插入的項數(可多項)
var a=[1,2,3,4,5]; var b=a.splice(3,1,2); //a變為[1, 2, 3, 2, 5]6.位置查找
indexOf()和lastIndexOf(),接收兩個參數:要查找的項和(可選的)表示起點位置的索引,都返回要查找的項在數組中的位置。
7.迭代方法every():對數組的每一項運行給定的函數,如果該函數對每一項運行都返回 true,則返回 true,對原函數無影響
some():對數組中的每一項運行給定的函數,如果該函數對任一項返回 true,則返回 true,對原函數無影響
filter():對數組的每一項運行給定函數,返回該函數會返回true的項組成的數組
forEach():對數組中的每一項運行給定函數,無返回值
map():對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組
8.縮小方法reduce()和reduceRight()
傳入四個參數:前一個值、當前值、項的索引、數組對象本身。這個函數返回的任何值都會作為第一個參數自動傳給下一項,第一次迭代發生在數組的第二項上。
var numbers = [1, 2, 3, 4, 5]; var sum= numbers.reduce(function (pre, cur, index, arr) { return pre + cur; }) alert(sum); // 15四.參考資料
《JavaScript高級程序設計》
《JavaScript權威指南》
在JavaScript中,如何判斷數組是數組?
Object.prototype.toLocaleString()
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80196.html
摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現在已經一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現將已經寫好的文章整理一個目錄,方便更多的小伙伴去學習。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:看下面一個例子優點使用構造器函數的好處在于,它可以在創建對象時接收一些參數。按照慣例,構造函數的函數名應始終以一個大寫字母開頭,以區分普通函數。返回該對象的源代碼。使您有能力向對象添加屬性和方法。 基本概念 ECMA關于對象的定義是:無序屬性的集合,其屬性可以包含基本值、對象或者函數。對象的每個屬性或方法都有一個名字,而每個名字都映射到一個值。 類 在現實生活中,相似的對象之間往往都有...
摘要:很簡單,不是數組,但是有屬性,且屬性值為非負類型即可。至于屬性的值,給出了一個上限值,其實是感謝同學指出,因為這是中能精確表示的最大數字。如何將函數的實際參數轉換成數組 這篇文章拖了有兩周,今天來跟大家聊聊 JavaScript 中一類特殊的對象 -> Array-Like Objects。 (本文節選自 underscore 源碼解讀系列文章,完整版請關注 https://githu...
摘要:循環數組每一項數組下標當前調用數組本身可選初始值,作為回調函數第一個參數的默認值,也是每次回調的返回值,見代碼首頁問題轉化為數組首頁問題轉化后效果這個栗子來自配置路由時遇到的,當時也是優化了好幾個版本。 reduce callback(一個在數組中每一項上調用的函數,接受四個參數:)previousValue(上一次調用回調函數時的返回值,或者初始值)currentValue(當前正...
閱讀 3398·2023-04-25 22:04
閱讀 2197·2021-11-22 15:29
閱讀 2161·2021-10-11 10:57
閱讀 1402·2021-09-24 09:48
閱讀 3147·2021-09-09 09:34
閱讀 2543·2021-09-02 15:21
閱讀 2393·2019-08-30 15:53
閱讀 1120·2019-08-30 14:07