目錄
一、創建一個數組
1.1 數組如何創建
字面量創建
構造函數創建
1.2 數組的長度
數組名.length?
1.3 數組的索引
1.4 數組如何循環遍歷
for 循環遍歷
for in
for of
二、數組的常用方法 (重點 面試)
push 方法
unshift 方法
pop
shift
splice
reverse
sort
concat
join
slice
練習
作業
?
一、創建一個數組
-
[]
裝起來的內容構成了一個數組 比如[2,8,'hello',true]
中間逗號分割
1.1 數組如何創建
分成兩種方式
-
字面量創建
// 字面量創建 var arr = []; //創建了一個空數組var arr1 = [11,22,33,44,55,99];// 創建了一個有內容的數組
-
構造函數創建
//構造函數創建var arr2 = new Array();// 創建了一個空數組 var arr3 = new Array("hello","js","!");// 創建了一個有內容的數組console.log(arr3);
1.2 數組的長度
數組名.length?
-
length 代表長度,數組里有多少個成員,length就是多少
var arr3 = new Array("hello","js","!");// 創建了一個有內容的數組
console.log(arr3.length);
1.3 數組的索引
-
索引就是下標,是指一個數據在數組里面排在第幾個位置
-
注意:下標從0開始的,所有編程語言里的下標都是從0開始
-
想獲取數組的第幾個元素就
數組[索引]
var arr1 = [11, 22, 33, 44, 55, 99];// 創建了一個有內容的數組//構造函數創建
var arr3 = new Array("hello", "js", "!");// 創建了一個有內容的數組
// console.log(arr3.length);// 如何通過下標獲取數組的某一項
console.log(arr1[0]);//11
console.log(arr1[5]);//99
console.log(arr3[1]);//js
1.4 數組如何循環遍歷
-
for 循環遍歷
var arr = ["11","22","33","44","55","66"];
// 1 直接通過for循環遍歷
for(var i=0;i<arr.length;i++){//i 0-8 9次console.log(arr[i]); //0-8 的值
}i<arr.length 因為length就是數組的長度,就是一個數字,可以直接把它當成循環的次數
arr[i] //i 代表 0 1 2 3 4... 相當于arr[0] arr[1] arr[2] arr[3]
-
for in
// 2 for in 遍歷數組 直接獲取到數組的索引for(idx in arr){console.log("數組下標是"+idx);// 可以獲取到下標,通過下標拿到數組的每一個元素console.log("數組元素是"+arr[idx]);}
-
for of
// 3 for of 遍歷數組 直接獲取到數組的元素for(item of arr){console.log(item); }
二、數組的常用方法 (重點 面試)
-
push 方法
-
就是在數組的末尾追加一個元素,返回添加之后的數組的長度
-
會修改原數組的
-
var arr = [1,2,3,4,5];
var res = arr.push("哈哈哈");
console.log(arr,"添加后");
console.log(res);//6
unshift 方法
-
就是在數組的最前邊添加一個元素,返回添加之后的數組的長度
-
會修改原素組的
var arr = [1,2,3,4,5,6,8];
var res = arr.unshift("00000");
console.log(arr);
console.log(res);//8
pop
-
用來刪除數組末尾的一個元素,返回刪除的元素
-
會修改原數組
var arr = [1,2,3,4,5];
var res = arr.pop();
console.log(arr); //[1, 2, 3, 4]
console.log(res); //5
shift
-
刪除數組最前邊的一個元素,返回刪除的元素
-
會修改原數組
var arr = [1,2,3,4,5];var res = arr.shift();console.log(arr); //[2, 3, 4, 5]console.log(res); //1
splice
-
用來截取數組中的某些內容,按照數組的索引來截取,返回截取的內容
-
也會修改原數組
-
語法1:
數組.splice(從哪個索引位置開始截取,截取的個數)
-
語法2:
數組.splice(從哪個索引位置開始截取,截取的個數,替換的新元素)
第三個參數可以不寫
var arr = ["hello","js","heihei","haha","html","Css"];var res = arr.splice(2,3);console.log(arr);//['hello', 'js', 'Css']console.log(res);三個參數var arr = ["正在加載","正在加載","正在加載","正在加載"];//arr.splice(0,1,"加載完成");//console.log(arr); //['加載完成', '正在加載', '正在加載', '正在加載']arr.splice(0,2,"加載完成")console.log(arr);//['加載完成', '正在加載', '正在加載']
reverse
-
用來翻轉數組 把數組反過來
-
會修改原數組
var arr = [1,2,3,4,5,6];
arr.reverse();
console.log(arr);?//[6, 5, 4, 3, 2, 1]// 數組的方法 是可以連用的arr.reverse().splice(0,2);console.log(arr);//[4, 3, 2, 1]
sort
-
用來給數組排序的 給一個無序的數組排列成有序的
-
會修改原數組
var arr = [8,2,1,3,6,9];
arr.sort();
console.log(arr); //[1, 2, 3, 6, 8, 9] 從小到大排序
===================================================// 從小到大排序
// arr.sort(function (a,b){
// return a-b // 從小到大排序
// })
// console.log(arr);// 從大到小排序
arr.sort(function (a,b){return b-a // 從大到小排序
})
console.log(arr); //[9, 8, 6, 3, 2, 1]
=====================================================var arr1 = [{name:"張三",age:18
},{name:"李四",age:16
},{name:"王五",age:20
}]// 按照年齡排序
arr1.sort(function(a,b){return b.age - a.age
})
console.log(arr1);
concat
-
用來數組合并的 把多個數組合在一起
-
不會改變原來的數組,會返回一個新的合并后的數組
var arr = [1,2,3,4];
var arr1 = ["hello","js"];
var arr2 = [true,false];
var newArr = arr.concat(arr1)
console.log(arr,arr1); //?[1, 2, 3, 4] ?['hello', 'js']
console.log(newArr);//[1, 2, 3, 4, 'hello', 'js']
join
-
是把數組里邊的每一項內容連接起來,變成一個字符串
-
中間的連接符可以自己定義
-
不會改變原數組 而是返回新的字符串
var arr = [1,2,3,4,5,6];
var str = arr.join();
var str1 = arr.join("");
var str2 = arr.join("-")
console.log(arr);//[1, 2, 3, 4, 5, 6]
console.log(str);//1,2,3,4,5,6
console.log(str1);//123456
console.log(str2);//1-2-3-4-5-6
slice
-
取出數組的一部分
-
兩參數
arr.slice(開始位置,結束位置)
不包含結束位置 -
不會改變原數組
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
// 兩參數 `arr.slice(開始位置下標,結束位置下標)` 不包含結束位置
//var res = arr.slice(0, 3)
var res = arr.slice(4,6);
console.log(res); //?[1, 2, 3]
console.log(arr);//[1, 2, 3, 4, 5, 6, 7, 8, 9]
練習
1、山上有一口缸可以裝50升水,現在有15升水。老和尚讓小和尚去挑水,小和尚一次挑5升,問
小和尚挑幾次可以把水缸挑滿?編程實現
循環 幾次 不確定的
一次挑5升 一次往數組里push 5
var arr = [15]// - 次數 可能是多次 多次想到循環
// 次數不確定幾次 想寫個死循環 符合結束條件停止循環var arr = [15];while(true){// 1- 執行一次就往數組里 push 5arr.push(5)// 2- 等到數組里的數組元素和相加>=50 這個循環該停止var sum = 0;for(var i=0;i<arr.length;i++){sum = sum + arr[i];}if(sum>=50){// 桶滿了// 不需要循環了break;}}console.log(arr);console.log("挑了"+(arr.length-1)+"次");二選一var arr = [15]
var sum = 0
for (var i = 0; i < arr.length; i++) {sum += arr[i]if (sum < 50) {arr.push(5)} else {console.log(i);}
}
作業
1、定義一個含有30個整形元素的數組,按順序分別賦予從2開始的偶數,然后按順序每五個求出一個平均值,
放在另一個數組中并輸出 編程實現
var arr = [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40...];
不要寫死一個數組 定義一個空數組 循環 往空數組里push 每五個求出一個平均值
[6, 16,26, 36,46,56]
2、編寫一個函數,把數組中的每一個數都增加30%,返回一個新數組
var arr = [10,100,200];
function fn(){//XXXXX
}
3、編寫一個函數 ,判斷數組中是否存在55這個元素,返回布爾值 (選做)
var arr = [1,2,3,4,55];
var arr1 = [1,2,3,4,6,7,8];
function fn(){XXXXXX
}
fn(arr,55); //true
fn(arr1,55);//false
?