數(shù)組的概念及其定義方式
數(shù)組:有序的值的集合
字面量的形式
1 var arr = [1,2,3]
2 Console.log(arr[0]);//0稱為索引或下標
3 Console.log(arr.length);//數(shù)組中元素的個數(shù)
4 var arr1=[];
5 arr1[0]=10;
構造函數(shù)
1 var arr1 = new Array()
2 var arr1 = new Array(10)//長度為10
3 var arr1 = new Array(1,2,3,4)//兩個及以上的數(shù)字為內(nèi)容
數(shù)組的常用方法(依賴于數(shù)組使用)
獲取方法:對象.方法( )
var arr =new Array(1,2,3,4,5,6,7,8,9);
//push()返回數(shù)組中元素的個數(shù),向數(shù)組尾部中增加元素,有多少加多少,原數(shù)組發(fā)生改變。
var length=arr.push(10)
console.log(arr)//[1,2,3,4,5,6,7,8,9,10]
console.log(length)//10
//pop()從數(shù)組的尾部刪除一個元素,返回這個刪除的元素,不接收參數(shù)
arr.pop()
console.log(arr)//[1,2,3,4,5,6,7,8,9]
arr.unshift(0)//返回數(shù)組中元素的個數(shù)向數(shù)組的頭部增加元素,括號中有多少就加多少,原數(shù)組發(fā)生改變
arr.shift()//從數(shù)組的頭部刪除一個元素,返回這個刪除的元素,不接收參數(shù)
arr.slice(4)//從下標為4的開始截取,直至數(shù)組結束
arr.slice(0,2)//從下標0開始截取,到下標2結束,不包含下標2的數(shù),此方法原數(shù)組不變
arr.splice(4)//一個參數(shù),從下標4對應的位置開始,直到數(shù)組結束
arr.splice(0,1)//兩個參數(shù)從下標為0開始,第二個參數(shù)截取長度
arr.aplice(1,2,1,1,1)//三個及三個以上的參數(shù),從截取的起始位置開始添加第三個及以后的所有參數(shù),此方法原數(shù)組改變
arr.reverse()//數(shù)組翻轉(zhuǎn),該方法會改變原來的數(shù)組,而不會創(chuàng)建新的數(shù)組
arr.sort()//無參數(shù)默認從小到大排序,判斷方式:按位判斷
arr.sort(function(a,b){//從大到小排序
return b-a;
})
var arr1=[11,12]
var arr3=arr1.concat(arr,33,44)//將arr1,arr,33,44拼接為一個新的數(shù)組,用arr3接收
arr.join('-')//將數(shù)組轉(zhuǎn)化為為字符串,以括號內(nèi)的拼接
數(shù)組的遍歷方法
for循環(huán)
//使用變量緩存臨時數(shù)組
for(i=0;i<arr.length;i++)
{
//執(zhí)行代碼塊
console.log(i)
}
forEach循環(huán)
//遍歷數(shù)組中的每一項,沒有返回值,對原數(shù)組沒有影響,不支持IE
arr.forEach((item,index,array)=>{
//執(zhí)行代碼
item+=1;
})
//數(shù)組中有幾項,那么傳遞進去的匿名回調(diào)函數(shù)就需要執(zhí)行幾次;
map循環(huán)
//map的回調(diào)函數(shù)中支持return返回值
//arr.map(function(value,index,array){
//執(zhí)行代碼
// return xxx
//})
forof遍歷
//可以正確響應break、continue和return
for (var value of myArray) {
console.log(value);
}
filter遍歷
//不會改變原始數(shù)組,返回新數(shù)組
var arr = [
{ id: 1, text: 'aa', done: true },
{ id: 2, text: 'bb', done: false }
]
console.log(arr.filter(item => item.done))
//ES5
arr.filter(function (item) {
return item.done;
});
var arr = [73,84,56, 22,100]
var newArr = arr.filter(item => item>80) //得到新數(shù)組 [84, 100]
console.log(newArr,arr)
every遍歷
//every()是對數(shù)組中的每一項運行給定函數(shù),如果該函數(shù)對每一項返回true,則返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ];
console.log( arr.every( function( item, index, array ){
return item > 3;
}));
false
some遍歷
//some()是對數(shù)組中每一項運行指定函數(shù),如果該函數(shù)對任一項返回true,則返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ];
console.log( arr.some( function( item, index, array ){
return item > 3;
}));
true
reduce
//reduce() 方法接收一個函數(shù)作為累加器(accumulator),數(shù)組中的每個值(從左到右)開始縮減,最終為一個值
var total = [0,1,2,3,4].reduce((a, b)=>a + b); //10
//reduce接受一個函數(shù),函數(shù)有四個參數(shù),分別是:上一次的值,當前值,當前值的索引,數(shù)組
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
});