數(shù)組的聲明(引用數(shù)據(jù)類型)
1.使用[] 聲明數(shù)組
var arr = [1,2,3]
2.使用new 關(guān)鍵詞進(jìn)行聲明 (對象)
var arr = new Array(10) //里面參數(shù)指定對應(yīng)的長度 如果你沒有寫 表示長度為0
var arr2 = new Array(1,2,3,4) //當(dāng)前數(shù)組里面的數(shù)據(jù)有 1 2 3 4
3.下標(biāo)訪問
console.log(arr[0])//獲取第一個
console.log(arr['0']); //獲取第一個 可以允許字符串
4.數(shù)組的賦值
arr[0] = 10
console.log(arr[0]) //10 // 給數(shù)組里面的元素隨機給值
var arr = new Array()
for(var i=0;i<10;i++){
arr[i] = Math.random() //0-1 包含0 不包含1的
}
console.log(arr);
- 數(shù)組遍歷
1) 傳統(tǒng)的for循環(huán)遍歷
var arr = [1,2,3,45,12] //利用順序表的特點 有序
for(var i=0;i<arr.length;i++){
console.log(arr[i])
}
2)for in遍歷 (對象 下標(biāo) 迭代器 next)
var arr = [1,2,3,45]
for(var index in arr){ //index表示的為下標(biāo)
console.log(arr[index])
}
3)for of進(jìn)行遍歷(數(shù)組 迭代器來實現(xiàn)的)
//使用for of遍歷(只能遍歷數(shù)組)
for(var value of arr){ //value表示的是里面值
console.log(value)
}
#### 數(shù)組的方法
數(shù)組是一個存儲結(jié)構(gòu)(增刪改查的操作)
添加 (add push append..)
棧方法 (先進(jìn)后出 后進(jìn)先出)push 入棧 pop出棧操作
push方法(添加到最后一個)
隊列方法(先進(jìn)先出 后進(jìn)后出)
unshift方法(添加到第一個)
var arr = [1]
arr.unshift(10)
console.log(arr) //[10,1]
刪除 (delete(硬刪) remove(軟刪)..)
棧方法
pop方法(刪除最后面)
var arr = [1,2,3]
arr.pop() //下標(biāo)不寫的
console.log(arr) //[1,2]
隊列方法
shift方法(刪除第一個)
var arr = [1,2,3]
arr.shift()
console.log(arr) //[2,3]
反轉(zhuǎn) reverse(將最后一個變到第一個 一個個對應(yīng)的換位置)
//改變原本的數(shù)組
var arr = [1,2,3,4,8]
var arr1 = arr.reverse(); //返回一個數(shù)組 這個數(shù)組就是反轉(zhuǎn)后的數(shù)組
arr1.unshift(10) //返回的反轉(zhuǎn)后的數(shù)組其實就我們原本的數(shù)組
console.log(arr) //反轉(zhuǎn)后的結(jié)果 [8,4,3,2,1]
console.log(Object.is(arr1,arr));//true
排序 sort
//sort方法排序 //默認(rèn)情況下他是根據(jù)第一個字符的ACSII碼進(jìn)行排序 (ACSII碼排序)
var arr2 = [15,20,11,4,5]
arr2.sort() //返回一個數(shù)組 這個數(shù)組是排序好的數(shù)組 他跟上面一樣 就是返回的這個數(shù)組其實就是原本的數(shù)組
console.log(arr2);
// sort 其實是一個高階函數(shù) 高階函數(shù)就是里面用函數(shù)做為參數(shù)的函數(shù)
var arr3 = [15,20,11,4,5]
arr3.sort(function(a,b){
//1 和 -1來進(jìn)行大小區(qū)分和排序規(guī)則
return b-a //a-b是正序 b-a就倒序
})
console.log(arr3);
不影響原本數(shù)組的方法
concat (連接)
//不會影響原本數(shù)組的方法 返回新的數(shù)組
var arr = [1,2,3,4]
var arr1 = [1,2,3,4]
var arr2 = [1,2,3,4]
var arr3 = [1,2,3,4]
// concat 連接 把多個數(shù)組變成一個數(shù)組 返回 ...擴展運算符 打開數(shù)組取出 里面的值(...證明可以寫任意個) ? 表示可寫可不寫
var newArr = arr.concat(arr1,arr2,arr3)
console.log(newArr);
slice (截取)
// slice 切片 把一個數(shù)組里面東西提出 返回的新的數(shù)組
var sliceArr = arr.slice()//全切
console.log(sliceArr);
var sliceArr1 = arr.slice(0)//從0開始切到最后 如果下標(biāo)不存在返回一個空數(shù)組
console.log(sliceArr1);
var sliceArr2 = arr.slice(2,3)//不包含結(jié)束的下標(biāo) 包含開始的下標(biāo)
console.log(sliceArr2);
splice 方法 (刪除)
//splice會影響之前的數(shù)組 刪除 截取 插入
var arr = [12,13,45]
//參數(shù) 開始位置 刪除的個數(shù)(可以寫可以不寫 數(shù)組的length) 返回一個新的數(shù)組
// var newArr = arr.splice(0) //從開始刪
// console.log(newArr);
console.log(arr);
var newArr = arr.splice(1,2) //從開始刪
console.log(newArr);
//獲取刪除的內(nèi)容 其實就截取里面的內(nèi)容(不足是會改變之前的數(shù)組)