1. 程式人生 > 其它 >JavaScript基礎——陣列

JavaScript基礎——陣列

陣列

為什麼要學習陣列

之前學習的資料型別,只能儲存一個值(比如:Number/String。我們想儲存班級中所有學生的姓名,此時該如何儲存?

陣列的概念

所謂陣列,就是將多個元素(通常是同一型別)按一定順序排列放到一個集合中,那麼這個集合我們就稱之為陣列。

陣列的定義

陣列是一個有序的列表,可以在陣列中存放任意的資料,並且陣列的長度可以動態的調整。

通過陣列字面量建立陣列

// 建立一個空陣列
var arr1 = [];
// 建立一個包含3個數值的陣列,多個數組項以逗號隔開
var arr2 = [1, 2, 3];
// 建立一個包含2個字串的陣列
var arr3 = ['a', 'b'];

// 可以通過陣列的length屬性獲取陣列的長度
console.log(arr3.length); // 2
// 可以設定length屬性改變陣列中元素的個數
arr3.length = 0; // 清空陣列

獲取陣列元素

格式

array[/*下標*/]  // 下標又稱索引

功能:獲取陣列對應下標的那個值,如果下標不存在,則返回undefined

案例

var arr = ['red', 'blue', , 'yellow', 'black'];
arr[0]; // red
arr[1]; // blue
arr[2]; // undefined,沒有定義值
arr[3]; // yellow
arr[5]; // undefined,這個陣列的最大下標為4,因此返回undefined

遍歷陣列

遍歷:遍及所有,對陣列的每個元素都訪問一次就叫遍歷。

陣列遍歷的基本語法:

var arr = [0, 2, 5, 5]
for (var i = 0; i < arr.length; i++) {
    // 陣列遍歷的固定結構
}

陣列中新增元素

// 格式:陣列名[下標/索引] = 值;
// 如果下標有對應的值,會把原來的值覆蓋,如果下標不存在,會給陣列新增一個元素。
var arr = ['red', 'blue', 'pink', 'black'];
arr[0] = 'yellow';
arr[2] = 'purple';
arr[5] = 'skyblue';
console.log(arr); 
// ["yellow", "blue", "purple", "black", empty, "skyblue"]
// length = 6
// empty:空的

陣列案例

  1. 求一組數中的所有數的和和平均值
  2. 求一組數中的最大值和最小值,以及所在位置
  3. 將字串陣列用|或其他符號分割
  4. 要求將陣列中的0項去掉,將不為0的值存入一個新的陣列,生成新的陣列
  5. 翻轉陣列
  6. 氣泡排序,從小到大
// 案例1 求一組數中的所有數的和和平均值
var arr = [2, 3, 5, 5, 9, 8, 20, 60, 84];
var sum = 0;
var ave;
for (var i = 0; i < arr.length; i++) {
	sum += arr[i];
}
ave = sum / arr.length
console.log('這組資料的和等於' + sum)
console.log('這組資料的平均數等於' + ave)

// 案例2 求一組數中的最大值和最小值,以及所在位置
var arr = [2, 3, 5, 5, 1, 8, 99, 60, 84];
var max = arr[0];
var min = arr[0];
var maxIndex = 0;
var minIndex = 0;
for (var i = 1; i < arr.length; i++) {
	if (max < arr[i]) {
		max = arr[i];
		maxIndex = i;
	};
	if (min > arr[i]) {
		min = arr[i];
		minIndex = i;
	}
} 
console.log(max);
console.log(maxIndex);
console.log(min);
console.log(minIndex);

// 案例3 將字串陣列用|或其他符號分割
var names = ['郭靖', '黃蓉', '楊過', '黃老邪', '段譽'];
var separator = '&';
var str = names[0];
console.log(names.length)
for (var i = 1; i < names.length; i++) {
	str += separator + names[i];
}
console.log(str);

// 案例4 要求將陣列中的0項去掉,將不為0的值存入一個新的陣列,生成新的陣列
var numbers = [0, 5, 0, 8, 6, 52, 0, 85, 54, 0, 64];
var newarray = [];
for (var i = 0 ; i < numbers.length; i++) {
	if (numbers[i] !== 0) {
		newarray[newarray.length] = numbers[i];
	}
}
console.log(newarray);

// 案例5 翻轉陣列
var numbers = [0, 5, 0, 8, 6, 52, 0, 85, 54, 0, 64]; 
var newnumbers = [];
for (var i = numbers.length - 1; i > 0; i--) {
	newnumbers[newnumbers.length] = numbers[i];
}
console.log(newnumbers);

// 案例6 氣泡排序,從小到大
var numbers = [8, 5, 9, 8, 6, 52, 100, 85, 54, 154, 64]; 
for (var i = 0; i < numbers.length - 1; i++) {
	for (var j = 0; j < numbers.length - 1 - i; j++) {
		if (numbers[j] > numbers[j + 1]) {
			var tmp = numbers[j];
			numbers[j] = numbers[j + 1];
			numbers[j + 1] = tmp;
		}

	}
}
console.log(numbers)

// 案例6優化 氣泡排序,從小到大
var numbers = [8, 5, 9, 8, 6, 52, 100, 85, 54, 154, 64]; 
var coun = 0;
for (var i = 0; i < numbers.length - 1; i++) {
	coun++;
	var isok = true;
	for (var j = 0; j < numbers.length - 1 - i; j++) {
		coun++;
		if (numbers[j] > numbers[j + 1]) {
			isok = false; 
			var tmp = numbers[j];
			numbers[j] = numbers[j + 1];
			numbers[j + 1] = tmp;
		}
	}
	if (isok == true) {
		break;
	}
}
console.log(numbers);
console.log(coun);