1.什么是數組麸拄?
數組是一個線性集合,通過索引進行存取傻丝,索引可能是數字久橙,用來計算偏移量俄占。
1.1? js 數組與其他語言數組的區(qū)別
1.1.1? 效率上不如其他語言
????js本著萬物皆對象的宗旨,所以數組是一種特殊的對象淆衷,對象的索引必須是字符串缸榄,所以數組的索引是字符串,其他語言是數字類型祝拯,在效率上不如其他語言甚带。
1.1.2? js 數組可以不必為同一種數據類型
1.1.3 js 數組的長度可以超過指定的長度,超過后數組會自動擴展
2.創(chuàng)建新數組
2.1 創(chuàng)建數組有兩種方法? ?第一種 字面量方式 var arr =[2,3,4,5];? 速度比較快佳头。第二種 var arr = new Array(),括號內傳入一個參數鹰贵,表示數組長度,數組的每一個值都是undefined康嘉,輸入多個參數表示數組的內容碉输。
特別提醒:?判斷一個對象是否是數組用 Array.isArray()
?2.2 對數組進行操作
2.2.1 讀寫數組
有兩種方法 ,第一種 for 循環(huán)對數組進行賦值
var nums = [];
for(var i=0;i<100;++i){
? ? nums[i] = i+1;
}
第二種亭珍,字符串生成數組
var str = 'wo shi yi ge hao ren';
console.log(str.split( ' ')) 接收一個分隔符敷钾,用來劃分數組的個數
特別提醒:在for循環(huán)里++i 和? i++沒有區(qū)別
2.2.2 對數組的整體操作
第一種: 賦值?
將一個數組賦值給另一個數組,數組是引用類型的块蚌,引用類型的直接賦值是淺拷貝,改變新的變量會影響上一個變量膘格。需要進行深拷貝峭范。深拷貝的方法有四種 :1.循環(huán)賦值 2. 擴展運算符 3.slice(0) 4.concat()
2.3 存取函數
1.查找?
indexof() 用來查找目標數組是否存在目標。存在返回第一個匹配目標的索引瘪贱,不存在返回-1纱控,lastIndexOf()存在返回倒數第一個索引辆毡,不存在返回-1.
2. 數組轉字符串
1.join() 可接收參數,作為數組轉字符串的鏈接符甜害,默認就逗號
2.toString() 只能是逗號舶掖,不接收參數,作為js默認方法尔店,輸入會進行默認調用眨攘。
3.由已知數組創(chuàng)建新數組
concat() 合并多個數組,創(chuàng)新一個新數組嚣州■晔郏可以是數組或者字符串.從左到右連接。
splice() 截取一個數組組成新數組1.第一個參數死索引的起點该肴,第二個參數 在刪除截取的時候是長度情竹,在增加插入的時候是0,增加插入的時候有第三個參數匀哄,為要增加的值秦效。
4.數組的方法
push() 向后增加 pop() 從后刪除
unshift() 向前增加 shift() 從?前刪除
返回值 插入值返回數組的長度,刪除值返回的是被刪除的元素涎嚼。
5.數組排序
reverse() 反向
sort() 默認是以字符串的字典排序的阱州,數值類型的排序需要傳入一個比較規(guī)則的函數。如若不傳铸抑,會以字符串的規(guī)則排數字贡耽。
6.迭代器
不生產新數組的方法
array.forEach(規(guī)則函數)
every() 接受一個返回布爾值的函數,全部為真才為真鹊汛,返回值是一個布爾值
some() 接受一個布爾值的函數蒲赂,一真為真
reduce() 接受一個函數,返回一個值刁憋,該方法從一個累加值開始滥嘴,不斷對累加值和數組中的后續(xù)元素執(zhí)行該函數≈脸埽可以用來求和 和連接字符串若皱。
reduceRight() 從由向左。
7.生產新數組的方法
map()
flitter()類every 接受一個布爾值的函數尘颓,返回為真的集合走触。
2.3 二維數組和多維數組
js只支持一維數組,通過在數組里保存數組的形式創(chuàng)建二維或多維數組疤苹。
創(chuàng)建二維數組互广,讓一維數組的每一個元素也是一個數組