<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//---------------------------- 数组的创建 方式-------------------------------
//理解:数组就是一个容器 装数据用的 通过角标来获取对应位置的值
//定义1(字面量定义)
var array1 = [1,2,3];//数组长度是3 重0角标开始
var array2 = [];
console.log(typeof array1); //object
console.log(array1); //[1,2,3]
//定义2(对象创建)
var arr1 = new Array();
var arr2 = new Array("关羽","张飞","刘备");
var arr3 = new Array(1,2,3);
var arr3 = new Array(3);
console.log(arr1); //空数组[]
console.log(arr2); //["关羽", "张飞", "刘备"]
console.log(arr3); //后面定义的变量会覆盖前面的 Array(3) 是数组的长度是3 没有值
//---------------------------- 数组的操作 --------------------------
var arr = ["刘备","关羽","张飞"];
//数组长度
console.log(arr.length);
//通过索引值获取元素。
console.log(arr[0]); //刘备
console.log(arr[1]); //关羽
console.log(arr[1222]); //由于arr没有这么大的角标 所以undefined
//通过索引值,给元素赋值
arr[0] = "韩信";
arr[1] = "萧何";
arr[2] = "张良";
console.log(arr[0]); //韩信
console.log(arr[1]); //萧何
console.log(arr[2]); //张良
//---------------------------- 数组的遍历操作 -----------------------------
//1-10之间能被3整数的数字,存到数组中
//数组长度本身开始的时候是0,紧接着每添加进去一个值,数组长度自增1;
//新的变量j可以用,arr.length替代,因为初始化值也是0,每添加一个元素也是自增1.
var arr4 = [];
for(var i=1;i<=10;i++){
if(i%3===0){
arr4[arr4.length] = i;
}
}
console.log(arr4);
//将字符串数组用|或其他符号分割 不该遍老数组
var arr5 = ["吕超","赵云","典韦","关羽","马超","张飞"];
var str = arr5[0];
var separator = "|";
for(var i=1;i<arr5.length;i++){
str += separator+ arr5[i];
}
console.log(str);
//数组翻转 1.操作原数组,让原数组第一位和最后一个位调换位置,以此类推
var arr6 = ["刘备","关羽","张飞","诸葛亮","马超","黄忠","姜维"];
for(var i=0;i<arr6.length/2;i++){
//让前后数组中的元素交换位置。
var temp = arr6[i];
//前面项和对应的后面项交换位置。(arr.length-1-i = 倒数第i+1项)
arr6[i] = arr[arr6.length-1-i];
arr6[arr6.length-1-i] = temp;
}
console.log(arr6);
//---------------------------- 冒泡排序 ---------------------------------
//简单版
var arr7 = [7,6,5,4,3,2,1];
console.log("为排序的arr7:"+arr7);
for(var i=0;i<arr7.length-1;i++){
//2.指定轮数和次数(内循环控制次数)
for(var j=0;j<arr7.length-1;j++){
//3.判断是否符合标准。如果符合标准交换位置。
//从小到大排列顺续,如果前面的比后面的大,那么交换位置。
if(arr7[j] > arr7[j+1]){
var temp = arr7[j];
arr7[j] = arr7[j+1];
arr7[j+1] = temp;
}
}
}
console.log("排序后的arr7:"+arr7);
//中级版
//每轮比较少比较一次。(每一轮都会比较出一个最大值,然后后一轮没有必要再比较了,
//所以没比较一轮,就少比较一次。。。)
var arr8 = [98,7,6,5,4,3,2,1];
console.log("排序前的arr8:"+arr8);
var m = 0;
var n = 0;
for(var i=0;i<arr8.length-1;i++){
for(var j=0;j<arr8.length-1-i;j++){
if(arr8[j] > arr8[j+1]){
var temp = arr8[j];
arr8[j] = arr8[j+1];
arr8[j+1] = temp;
}
m++;
}
n++;
}
console.log("排序后的arr8:"+arr8+"m: "+m+" n: "+n);
//最终版
//如果比较完备提前结束比较。(判断,如果本次比较没有移动任何元素,那么说明已经比较完成)
var arr9 = [33,21,90,1, 2, 3, 4, 5, 6, 7];
console.log("排序前的arr9:"+arr9);
var m = 0;
var n = 0;
for(var i=0;i<arr9.length-1;i++){
//开闭原则。(写在第一个for循环里,是为了,每轮比较初始化bool变量变为true。)
var bool = true;
//2.指定轮数和次数(内循环控制次数)
for(var j=0;j<arr9.length-1-i;j++){
//3.判断是否符合标准。如果符合标准交换位置。
//从小到大排列顺滑,如果前面的比后面的大,那么交换位置。
if(arr9[j] > arr9[j+1]){
var temp = arr9[j];
arr9[j] = arr9[j+1];
arr9[j+1] = temp;
bool = false;
}
m++;
}
n++;
//bool这个变量默认值为true;如果本轮比较有一对元素相互交换位置,那么也不能跳出循环。
//但是,如果本轮比较没有任何元素相互交换位置,那么说明已经比较完成,可以跳出循环。
if(bool){
break;
}
}
console.log("排序后的arr9:"+arr9+"m: "+m+" n: "+n);
</script>
</body>
</html>
js 数组的 创建 操作 遍历 排序
最新推荐文章于 2024-02-04 23:54:15 发布