day-05數(shù)組
1. 數(shù)組的定義和使用
1. 數(shù)組的定義
- 方式一:
new Array(參數(shù),參數(shù),...): 只有一個數(shù)字參數(shù)時是數(shù)組的長度(new可以省略,但一般盡量寫上)
例如:
var arr = new Array(); //定義一個空數(shù)組
var arr = new Array(10); //創(chuàng)建一個包含 10 個元素的數(shù)組旗唁,沒有賦值
var arr = new Array(“芙蓉姐姐”,30); //創(chuàng)建一個數(shù)組有兩個元素
```
- 方式二:
var arr = [1,2,3,4,5]; //字面量定義方式
2. 判斷數(shù)組類型
Array.isArray();
3. 數(shù)組元素的獲取(訪問)
arr[0]: 表示數(shù)組的第一個元素,0是下標(biāo)创夜,也叫索引
arr[1]: 表示數(shù)組的第二個元素沿侈,1是下標(biāo)
4. 數(shù)組的長度
數(shù)組長度(數(shù)組元素的個數(shù)) : arr.length
length屬性, 不僅是只讀的,也可以設(shè)置數(shù)組的長度驼侠,數(shù)組已經(jīng)發(fā)生了變化兔院、如果再把數(shù)組的長度改回來殖卑、數(shù)組里的成員其實已經(jīng)丟失
修改了
例如:
var colors = new Array("red", "blue", "green");
colors.length=2;
console.log(colors[2]);
數(shù)組的下標(biāo)從0開始, 所以數(shù)組的最后一個元素的下標(biāo)為: arr.length – 1
注意: 下標(biāo)可以是變量或表達(dá)式
5. 數(shù)組中元素類型
數(shù)組的中的元素可以是任意類型
6. 數(shù)組的下標(biāo)
- 數(shù)組下標(biāo)從0開始
var arr=[1,2,3,4,5,6];
數(shù)組下標(biāo) 0 1 2 3 4 5
- 數(shù)組的下標(biāo)、特殊處理
- 數(shù)組的下標(biāo)可以是任意類型坊萝、只是在for循環(huán)的時候孵稽、不會被遍歷到;
- for循環(huán)的下標(biāo)、只能是數(shù)值類型;
- for-in可以打印所有
7. 數(shù)組的遍歷for以及for—in
- for
- for循環(huán)是根據(jù)length的長度十偶、決定遍歷的次數(shù)
- for-in
- for-in 是根據(jù)數(shù)組里真實成員的個數(shù)菩鲜、決定遍歷的次數(shù)
8. 數(shù)組的方法
- push()往數(shù)組最后位置添加成員、返回數(shù)組新長度
- pop()刪除數(shù)組的最后一位扯键、并返回被刪除的元素
- shift():刪除數(shù)組的第一位睦袖、返回被刪除元素
- unshift():往數(shù)組的第一個位置添加元素、并返回數(shù)組新長度
- sort():排序
- reverse():倒序
- concat():合并(不會影響原來的數(shù)組)荣刑、拷貝
- slice():截认隗稀(不會影響原來的數(shù)組)
- splice():
- join():
// 1:push()往數(shù)組最后位置添加成員、返回數(shù)組新長度
var arr=[1,2,3];
console.log(arr.push("余文樂","uu"));
console.log(arr)
//結(jié)果:5
// [1, 2, 3, "余文樂", "uu"]
//2: pop()刪除數(shù)組的最后一位厉亏、并返回被刪除的元素
var arr=[1,2,3];
console.log(arr.pop());
console.log(arr)
//結(jié)果:3
// [1, 2]
//3: shift():刪除數(shù)組的第一位董习、返回被刪除元素
var arr=[1,2,3];
console.log(arr.shift());
console.log(arr)
//結(jié)果:1
// [2, 3]
//4: unshift():往數(shù)組的第一個位置添加元素、并返回數(shù)組新長度
var arr=[1,2,3];
console.log(arr.unshift("彭于晏","uu"));
console.log(arr)
//結(jié)果:5
//(5) ["彭于晏", "uu", 1, 2, 3]
//5: sort()排序
var arr3 = [1, 2, 3, 6, 5, 4];
arr3.sort(function (a, b) {
return a - b; //升序 sort底層兩兩比較
});
console.log(arr3);
arr3.sort(function (a, b) {
return b - a; //降序
});
console.log(arr3);
//6: reverse():倒序
//7: concat():合并 拷貝
//合并
var arr=[1,2,3];
var arrCopy=[4,5,6];
var arr3=arr.concat(arrCopy);
console.log(arr3);
//快速拷貝
var arr = [1, 2, 3, 4, "陳冠希"];
var arrCopy = arr.concat([]);
console.log(arrCopy);
//循環(huán)拷貝
var arr = [1, 2, 3, 4, "陳冠希"];
for (var i = 0; i < arr.length; i++) {
arrCopy[i] = arr[i];
}
console.log(arrCopy);
//8: slice():截取 通過下標(biāo)截取
var arr=[1,2,3,4,5,6,7];
//下標(biāo) 0 1 2 3 4 5 6
console.log(arr.slice(1,4)) //結(jié)束位置要多寫一位爱只、獲取到參數(shù)2皿淋,3,4
//9: splice():
//2個參數(shù) 刪除(開始位置恬试,個數(shù))
//3個參數(shù)窝趣、第二個參數(shù)為0、為插入(開始位置训柴、0哑舒、插入的內(nèi)容)
//3個參數(shù)、第二個參數(shù)為1幻馁、為替換(開始位置洗鸵、1(替換幾位)越锈、替換的內(nèi)容)
//10: join() 結(jié)合 默認(rèn)返回帶有“,”的字符串膘滨、也可以指定格式/如果是空字符串甘凭、就會返回一段字符串
9. 數(shù)組三大排序
- 冒泡排序
冒泡排序原理
//冒泡排序
//外層循環(huán)-1
//內(nèi)層循環(huán)-1由-i
//內(nèi)循環(huán)相鄰比較大小
//鄰里交換位置
var arr=[5,1,8,4,2,3,6,7];
for(var i=0;i<arr.length-1;i++){ //外層循環(huán)-1
for(var j=0;j<arr.length-1-i;j++){ //內(nèi)層循環(huán)-1又-I
if(arr[j]>arr[j+1]){ //內(nèi)循環(huán)相鄰比較大小
var temp=arr[j+1 ]; //鄰里交換位置
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
console.log(arr);
- 選擇排序
var list = [8, 4, 5, 20, 2, 7, 3, 6];
function selectSort(arr) {
for (var i = 0; i < arr.length; i++) {
//先自定義一個最小值
var minNum = I;
for (var j = i + 1; j < arr.length; j++) {
//獲取真正的最小值
if (arr[j] < arr[minNum]) {
minNum = j;
}
}
//交換位置
[arr[i], arr[minNum]] = [arr[minNum], arr[i]]
console.log(arr[i]);
}
}
selectSort(list);
console.log(list);
- 快速排序
var arr1 = [1, 9, 6, 3, 4, 8, 2];
function quickSort(arr) {
//該方法只適用于數(shù)組長度大于1位的數(shù)組
if (arr.length <= 1) {
return arr;
}
//獲取最中間數(shù)下標(biāo)
var centerIndex = parseInt((arr.length / 2));
//通過下標(biāo)得到數(shù)值
var centerNub = arr.splice(centerIndex, 1);
//定義兩個空的數(shù)組,
var left = [], right = [];
//循環(huán),大于中間數(shù)放在左邊的數(shù)組中,小于或等于則放在右邊的數(shù)組中
for (var i = 0; i < arr.length; i++) {
if (arr[i] > centerNub) {
left.push(arr[I])
} else {
right.push(arr[I])
}
}
//返回并拼接數(shù)組
return quickSort(left).concat(centerNub, quickSort(right));
}
console.log(quickSort(arr1));