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)新一個新數組??梢允菙到M或者字符串.從左到右連接。
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)建二維數組,讓一維數組的每一個元素也是一個數組