数组

数组

1. 什么是数组: 数组是存储1个或多个数据的容器,它是一组内存空间。 通常用来批量处理数据, 这组内存空间的名字,叫做数组名。
2. 数组是个不挑食的家伙,对其自身储存的数组元素并没有什么限制,无论是数量还是类型,通过数组下标(从0开始)来管理数组元素,不能直接通过数组名来操作数组元素,需要结合下标。
3. 数组名.length: 表示的是数组的长度,也是数组当前存储元素的个数,因为下标从0开始,所以数组长度-1表示数组内最后一个元素的下标。

< script>
          创建一个数组  
			//传统写法 
			var arr = new Array();
			var str = new String();
			
			//字面量(语法糖)
			var arr = [1,2,3,"haha"];
			console.log(arr);
				
			//访问数组 
			// 访问单个元素
			console.log(arr[0]);
			
			//访问全部元素
			//数组和循环的结合使用
			for(var i = 0; i < arr.length; i++){
				console.log(arr[i]);
			}
< /script>

循环访问数组时(遍历),容易出现数组越界的问题,一旦出现,会很麻烦;
数组越界: 访问了不属于该数组的内存空间

数组的方法:

(1)push: 将一个元素添加到数组的最后一位

 < script>
           var arr = [1,2,3,"haha"];
           var xixi = "咦嘻嘻";
			arr.push(xixi);
			arr.push("今天天气很不错");
			console.log(arr);
< /script>

(2)unshift: 添加到数组的第一位

< script>
           var arr = [1,2,3,"haha"];
           arr.unshift("今天是个好天气");
			console.log(arr);

< /script>

(3)pop(): 删除数组最后一个元素

< script>
           var arr = [1,2,3,"haha"];
           arr.pop();
			console.log(arr);
< /script>

(4)shift: 删除数组第一个元素

< script>
           var arr = [1,2,3,"haha"];
           arr.shift();
			console.log(arr);
< /script>

返回 数组中指定的范围

slice(开始,结束) : 截取数组中的指定范围,并将其返回 (需要多次使用就定义新数组来接收)
注意点: 从开始位置,到结束位置的前一位, 是指定的范围

 < script>
           var arr = [1,2,3,"haha"];
           var arr2 = arr.slice(0,2);
			console.log(arr2);
			console.log(arr.slice(0,3));
< /script>     

splice(开始的位置,修改的长度) :
删除:只规定了开始位置和修改的长度,但是没有规定新的内容
替换: 规定了开始位置和修改长度,也规定了新的内容
插入: 新内容的个数,多于修改的长度

< script>
           var arr = [1,2,3,"haha"];
           arr.splice(0,2,"下雨了");
		   console.log(arr);
< /script> 

slice和splice :
1. slice不会修改原数组,只是复制出来一份新的内容
2. splice修改原数组的数据,没有复制出新的内容
join(): 将数组中的元素,全部转换为字符串,并拼接起来。 最后返回

< script>
			var arr_two = [1,2,3,4,5,6];
			var a = arr_two.join();
			console.log(typeof arr_two);
< /script> 

数组方法

concat:合并两个数组,并返回合并后的新数组

var arr = [1,3,5,2,4];
	var arr_two = [8,9,10,'J','Q','K'];		
	//arr_two作为参数,拼接到了调用者arr的后面。 结合成了一个新的数组
	console.log(arr.concat(arr_two));

sort(): 数组排序 ,将调用者中的数据,按照从小到大的顺序排列

< script>
		var arr = [1,3,5,2,4];
		console.log(arr.sort());
</script>

reverse(): 倒序排列

< script>
		var arr = [1,3,5,2,4];
		console.log(arr.reverse());
</script>

instanceof 运算,判断 它 是不是一个数组, 并返回 true / false

< script>
var arr = [1,3,5,2,4];
console.log(arr instanceof Array);		
//书写方式2:
//Array.isArray(检测对象)
console.log(Array.isArray(arr));
</script>

稀疏数组 (自定义数组时 不允许出现)

< script>
		var arr_err = [1,,'a',,4,5,2,,'K'];
		console.log(arr_err[1]);
</script>

多维数组: js实际上支持不了多维数组, 但是可以数组嵌套的方式来类似

< script>	 
var arrs = [ ["刘猛",17,"性别女","爱好男"],
					 ["刘猛",15,"性别女","爱好男"],
					 ["刘猛",19,"性别女","爱好男"],
					 ["张林",18,"男","河南"]
				   ];
				   
		//访问和 修改二维数组的单个元素
		arrs[0][0] = "小红";
		arrs[0][3] = "爱好:要求挺多"
		arrs[1][0] = "小明";
		console.log(arrs[3]);
< /script>

数组去重和数组排序

<script type="text/javascript">
数组去重
		//创建一个参数bb封装
		function bb(arr){
			//外层循环数组中的每一个数据
			for(var i = 0; i<arr.length; i++){
				//内层从第二个数据开始往后的数据依次与第一个数据相比较
				for(var j = i+1; j<arr.length; j++){
					//如果两个数据相同
					if(arr[i]==arr[j]){
						//删除从j开始的1个长度的数据
						arr.splice(j,1);
						//数据会自动补位,--1回到删除的数据所对应的下标,继续比较
						--j;
					}
				}
			}
			//把结果返回
			return arr;
		}		
		var a= [1,5,1,4,8,2,8,5];
		//调用函数
		console.log(bb(a));
		
		//数组排序
		var arr=[5,8,1,3,4];
		for(var i =0; i<arr.length-1; i++){
			for(var j =i+1; j<arr.length; j++){
				
				if(arr[i]>arr[j]){
					var aa =arr[i];
					arr[i] = arr[j];
					arr[j] =aa;
				}
				
			}
		}
		
		console.log(arr);
		
		</script>

练习题

1. 定义一个具有10个元素的数组, 每个数组元素的值是 50~100之间随机数,并求出它们的加和,最大值,最小值。
//			var arr = []; // 空数组
//          var sum = 0;  // 存储加和
//          var max = 0; // 存储最大值
//          var min = 100; // 存储最小值
//          
//			for(var i=0; i<5; i++){
//				arr[i] = Math.ceil(Math.random()*(100 - 50)+ 50);
//				sum += arr[i];
//				
//				//判断并求出最大值
//				if(max < arr[i]){
//					max = arr[i];
//				}
//				
//				//判断并求出最小值
//				if(min > arr[i]){
//					min = arr[i];
//				}
//		  或者		
//			max = max < arr[i] ? arr[i] : max;
//			min = min > arr[i] ? arr[i] : min;

//				console.log(arr[i]);
//				
//			}
//			console.log("加和为: " + sum);
//			console.log("最大值为 :" + max);
//			console.log("最小值为: " + min);


//2 定义一个具有20个元素的数组,每个元素的取值范围是30~80之间的随机数,判断这其中是否有40,如果有 那么弹出提示框,提示用户。 如果整个数组都没有,则正常输出整个数组 
           
//         var a = [];
//          for (var i=0; i<20; i++){
//          	a[i]= Math.ceil(Math.random()*(80 - 30)+ 30);  
//          	
//          	 if(a[i] == 40){
//          		alert("随机数中有40");
//         		 }
//          }        
//        	console.log(a);
//          		          		
            	
//3. 复制一个数组。   即将一个数组的内容完全拷贝到另一个数组(两个数量,内容完全一致的数组)
            
//          var arr1 = [1,2,'t',4,5,'a'];
//          console.log(arr1);
//          var arr2 = arr1.slice(0,arr1.length);
//          console.log(arr2);


//4. 小明和小红的考试成绩不稳定,两人每次的成绩范围都是60~80之间浮动。 一个学期下来,共考了10次试。 小胖每次的成绩,都是他俩每次成绩的加和。  求出小胖一个学期中,每次考试的平均成绩			
			
//			var ming =[];
//			var hong =[];

//			var ming_sum = 0;
//			var hong_sum = 0;

//          for (var i=0; i<10; i++){
	
//          	ming[i]= Math.ceil(Math.random()*(80 - 60)+ 60);  
//          	hong[i]= Math.ceil(Math.random()*(80 - 60)+ 60);

//          	ming_sum += ming[i];
//          	hong_sum += hong[i];
//          }   
			
			//小胖的总成绩 = 小明的总成绩 + 小红的总成绩
//			var sum = ming_sum + hong_sum;
//			var pj = sum / 10 ;
//			console.log("小胖一个学期里每次考试的平均成绩为:" + pj);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值