1 数组(Array)
1.1 概念
// 数组就是一组数据的集合,每个数据被称之为元素,可以存放任意类型的元素。、
2 创建数组
// JS中存在两种数组的创建方式
// 2.1 利用new创建数组
var arr = new Array(); // 创建了一个空数组
// 2.2 利用数组字面量创建数组(常用)
var arr = [];
var arr1 = [1, 2, 3, '小飞', true];
// 数字里面的数据 用 逗号 分隔开
// 每个数据被称之为元素
3 获取数组元素
3.1 数组的索引
// 用来访问数组元素的序号(数字下标从0开始)
3.2 获取方式
// 数组名[索引号]
<script>
var arr1 = [1, 2, 3, '小飞', true];
console.log(arr1[3]); // 小飞
</script>
4 遍历数组
// 遍历 把数组中的每一个元素从头到尾都访问一次
<script>
var arr3 = ['red', 'blue', 'green', ];
for (var i = 0; i < 3; i++) { // 数字下标从0开始
console.log(arr3[i]);
}
</script>
// 因为数组的索引号从o开始,所有i从0,且i<3
5 数组长度
<script>
var arr4 = ['关羽', '刘备', '张飞', '赵云', '黄忠', '马超', '姜维']
for (var i = 0; i < 7; i++) {
console.log(arr4[i]);
}
</script>
// 使用 数组名.length 可以访问数组长度
<script>
var arr4 = ['关羽', '刘备', '张飞', '赵云', '黄忠', '马超', '姜维']
for (var i = 0; i < arr4.length; i++) {
console.log(arr4[i]);
}
console.log(arr4.length);
</script>
// 数组的长度是元素的个数,不要和索引混淆
// arr.length 是动态监测数组元素的个数
6 案例
// 1 要求;求数组[2,6,1,7,4]里面所有元素的和以及平均值
<script>
var sum = 0;
var arr5 = [2, 6, 1, 7, 4]
var average = 0;
for (var i = 0; i < arr5.length; i++) { // 遍历数组,把每个元素加到sum里面
sum += arr5[i]; // 我们加的数数组元素 arr【i】,并不是计数器 i
}
average = sum / arr5.length;
console.log(sum, average); // 想要输出多个变量
</script>
// 2 求数组[2,6,1,77,53,25,7]里面的最大值
<script>
arr6 = [2, 6, 77, 53, 25, 7];
var max = arr6[2]; // 默认一个最大值,和其他元素比较
for (var i = 0; i < arr6.length; i++) {
if (arr6[i] > max) { // 进行比较条件
max = arr6[i];
// 应用 求最小值 arr6[i] < min
}
}
console.log('该数组里面的最大值是:' + max + '');
<script>
7 数组转换为分割字符串
// 案例 将数组 ['red','green','blue','pink']转换位字符串
// 输出结果为 'red|green|blue|pink' 用其他符号进行分割
<script>
var arr7 = ['red', 'green', 'blue', 'pink'];
var str = '';
// 或者声明 一个 var sep = '*';
for (var i = 0; i < arr7.length; i++) {
str += arr7[i] + '*'; // + sep 即可
}
console.log(str);
</script>
8 数组中新增元素
// 8.1 可以修改length长度来实现数组扩容
<script>
var arr8 = ['red', 'pink', 'blue'];
console.log(arr8.length);
arr8.length = 5; // 把数组的长度修改为 5
console.log(arr8.length);
</script>
//8.2 可以通过索引来追加扩容
<script>
var arr9 = ['red', 'pink', 'blue'];
arr9[3] = 'green';
console.log(arr9);
arr9[0] = 'yellow'; // 如果索引被占用,会进行替换
console.log(arr9);
arr9 = '哎呦,不错呦!' // 不要直接给数组名赋值,否则数据全部丢失
console.log(arr9);
</script>
// 8.3 案例
// 要求:新建一个数组,里面存放10个整数
<script>
var arr = [];
for (var i = 0; i < 10; i++) {
arr[i] = i + 1; // 核心算法
}
console.log(arr);
</script>
9 筛选数组
// 方法一
// 要求: 将数组[2,0,6,1,77,0,52,0,25,7]中大于10的数组筛选出来
<script>
var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var arr2 = [];
var j = 0;
for (var i = 0; i < arr1.length; i++) { // 遍历数组1 ,找出大于10的数
if (arr1[i] > 10) {
// 新数组 索引号 应该从0开始依次递增
arr2[j] = arr1[i];
j++;
}
}
console.log(arr2);
// 方法二
var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var arr2 = [];
// 由于刚开始的时候,arr2 是空数组,arr2.length就是0
for (var i = 0; i < arr1.length; i++) { // 遍历数组1 ,找出大于10的数
if (arr1[i] > 10) {
// 新数组 索引号 应该从0开始依次递增
arr2[arr2.length] = arr1[i];
// arr2 是空数组,arr2.length就是0
}
}
console.log(arr2);
</script>
10 删除数组
// 1 将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 里面的0 删掉,形成一个新数组
<script>
arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
newarr = [];
for (var i = 0; i < arr.length; i++) { // 遍历原来的数组
if (arr[i] != 0) {
newarr[newarr.length] = arr[i];
}
}
console.log(newarr);
</script>
11 翻转数组
// 将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 内容反过来
<script>
arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
newarr = [];
// 把旧数组索引号第四个取来(arr.length -1)给新数组 索引号第0个元素
for (var i = arr.length - 1; i >= 0; i--) {
newarr[newarr.length] = arr[i];
}
console.log(newarr);
// 第二种函数方法
arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
newarr = arr.reverse();
console.log(newarr);
</script>
12 数组排序(冒泡排序)
// 交换两个变量的值
<script>
var num1 = 10;
var num2 = 20;
var temp;
temp = num1;
num1 = num2;
num2 = temp;
console.log(num1, num2);
</script>
// 冒泡排序是一种算法,把一系列数据按照一定顺序进行排列
<script>
var arr = [5, 4, 3, 2, 1];
for (var i = 0; i <= arr.length - 1; i++) { // 外层循环 管趟数,走4趟
for (var j = 0; j <= arr.length - i - 1; j++) {
// 里层循环管每趟的交换次数
// 内部交换两个变量的值,前面一个和后面一个相比较
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
</script>
[点击并拖拽以移动]