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:空的
数组案例
- 求一组数中的所有数的和和平均值
- 求一组数中的最大值和最小值,以及所在位置
- 将字符串数组用|或其他符号分割
- 要求将数组中的0项去掉,将不为0的值存入一个新的数组,生成新的数组
- 翻转数组
- 冒泡排序,从小到大
// 案例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);