javaScript 数组2021-07-20

JavaScript

目标

了解数组的概念

掌握数组的基本操作(插入,删除等)

一、数组
1.1、什么是数组
数组(Array)是有序的元素序列。 [1] 若将有限个变量的集合命名,那么这个名称为数组名。**组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量**。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把若干元素按有序的形式组织起来的一种形式。 [1] 这些有序排列的数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。

数组是有序的元素序列。

数组中的每一个元素都有一个属于自己的编号 编号从0开始 被称为下标。
一组数据的集合
数组 **是在内存中开辟一组连续的内存空间。数组会自动的为每一个数据(元素),添加一个编号,这个编号从0开始,这个编号称为下标,**数组中的数据又被称为,下标变量 分量
注意:js数组不区分数据类型。可以自动扩容。
java数组: 固定数据类型 ,不会自动扩容。
数组的中数据如何取出呢?

1.2、为什么用数组

为了方便
下标的作用,就是区分数组中的每一个数据。
1.3、数组的使用
1.3.1、数组的定义
方式一:

var arr=new Array();构造方法
var arr=new Array(5);创建一个初始长度为五的空数组
var arr=new Array(1,“a”,2);创建一个带有初始数据的数组;

方式二、
	绝大多数情况下使用的都是第二种语法。我们可以在方括号中添加初始元:

var arr1=【】 构造方法
var arr1=【1,2,3,4,】;创建一个带有初始数据的数组;

1.3.2、数组的取值和赋值

数组可以存储任何类型的元素。

数组取值:数组名[下标];

数组赋值(修改):数组名[下标] = 要修改的值;
数组元素从 0 开始编号。
length属性的值是数组中元素的总的个数

let fruits = ["Apple", "Orange", "Plum"];

alert( fruits.length ); // 3

也可以用 alert 来显示整个数组。

我们可以通过方括号中的数字获取元素

let fruits = [“Apple”, “Orange”, “Plum”];

alert( fruits[0] ); // Apple
alert( fruits[1] ); // Orange
alert(fruits[2] ); // Plum

1.3.3、数组的遍历

for循环遍历
for in遍历

var arr=[12,213,24,23,45]
for(var i=0;i<arr.length;i++){
    
    
	console.log(arr[i]);//控制台输出
}
for(var i in arr){
    
    
	console.log(arr[i]);
}

1.4数组的操作增删改查

var arr1=[34,35,56,67,78,89];
		alert(arr1+"你tm想在哪个后面插")
		 function aaaa(a){
    
    
				for(var i=0;i<arr1.length;i++){
    
    
					if(arr1[i]==a){
    
    
						break;
					}
					}
					if(-1<i && i<arr1.length){
    
    
						return i;
					}else{
    
    
						return -1;
					}
	
				} 
				//求值对应的下标
 var index1=aaaa(prompt("")); 		
			 function  bbb(index){
    
     
				
				
				
				for(var j=arr1.length-1;j>index;j--){
    
    
					arr1[j+1]=arr1[j]
					
				}
				var cr=prompt("插入什么")
				 arr1[index+1]=cr;
				alert(arr1); 
				}
//插入一个数让其他数后移
 function aaa(index){
    
        
			for(var	z=index;z<arr1.length;z++){
    
    
				arr1[z]=arr1[z+1];
			}
			arr1.length--;
			
			alert(arr1);} 
			//aaa()+bbb()=插入一个数 
			bbb(index1);
			
			aaa(index1);

冒泡排序

var arr=[12,30,14,20,16,17,18,19];
for(var j=0;j<arr.length-1;j++){
for(var i=0;i<arr.length;i++){
if(arr[i]>arr[i+1]){
var temp =arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;

				}
			}
		}
		console.log(arr);
		第一轮比较已将可以把最小的数字挪到最后一位,第二轮比较将第二小的数字移动到倒数第二位,下边依次。。。。

所以第一轮只需要比较6次,第二轮只需要比较5次,第三轮只需要比较4次,第四轮需要比较3次,第五轮需要比较2次,第六轮需要比较1次。

所以内层循环每次只需要比较arr.length-j-i次!

for(var j=0;j<arr.length-1;j++){
    
    
				for(var i=0;i<arr.length-j-i;i++){
    
    
					if(arr[i]>arr[i+1]){
    
    
						var temp =arr[i];
						arr[i]=arr[i+1];
						arr[i+1]=temp;
							
					}
				}
			}
			console.log(arr);

扩展:选择排序二分法 了解。
点击按钮改变页面背景颜色,使用数组作为数据源

<body>
		<button type="button" onclick="color1()">点我换颜色</button>
		
		
		<script type="text/javascript">
				var i=0;
			var color=["red","blue","yellow","green","pink","black","pourple"];
			function color1(){
    
    
				document.body.style.backgroundColor=color[i];
				i++;
			}
			if(i==7){
    
    
				i=0;
			}
		</script>
	</body>

点击p标签时,改变p标签的背景颜色

body>
		<button type="button" onclick="color1()">点我换颜色</button>
		<p id="aaaa" onclick="aaa()" >点我换颜色 </p>
	
		<script type="text/javascript">
		function aaa(){
    
    
				var color=["red","blue","yellow","green","pink","black","pourple"];
				document.getElementById("aaaa").style.backgroundColor=color[i];
				i++;
				
			}
			if(i==7){
    
    
				i=0;
			} 
				</script>
	</body>

1.4常用的数组方法和函数

名称 描述
join(’-’) 将数组转换为使用符号连接的字符串
concat(arr1,arr2) 与另一个数组合并为一个新数组
reverse() 将数组反转
sort(function(){排序规则}) 对数组进行排序
push(ele1,ele2) 向数组末尾添加新元素
unshift(ele1,ele2) 向数组的开头添加新元素
pop() 删除数组中末尾的值 返回删除的值
shift() 删除数组中开头的值 返回删除的值 与pop()相反
splice(1,2,3,4) 删除、替换、插入数组元素
indexOf(ele) 查找元素的下标位置

join
语法格式:
array.join(separator)

 var arr=[12,13,14,15]
		
			 var arr1=arr.join(';');
			 alert(arr1);//12;13;14;15

concat
语法格式:
string.concat(string1, string2, …, stringX)

var arr=[12,13,14,15];
		var arr2=[21,23,24,25];
		var arr3=arr.concat(arr2);
		alert(arr3);//12,13,14,15,21,23,24,25;
				

reverse
语法格式:
array.reverse()

var arr=[12,13,14,15]
		arr.reverse();
		alert(arr);	//15,14,13,12

sort
语法格式
array.sort(sortfunction)
数组的sort方法 括号的sort的函数排序方法例如
从小到大

 var arr=[12,16,14,15];
			 arr.sort(function(a,b){
    
    return a-b})
			 
			alert(arr);

这里使用箭头函数会更加简洁:

arr.sort( (a, b) => a - b );

push
语法格式
Array.push();

var arr1=[12,13,14,15,16];
			arr1.push(17);
			alert(arr1);

unshift

var arr1=[12,13,14,15,16];
			arr1.unshift(17);
			alert(arr1);

pop()

var arr1=[12,13,14,15,16];
			alert( arr1.pop());//16

shift

var arr1=[12,13,14,15,16];
			alert( arr1.shift());		

splice

var arr=[12,13,14,15,16];
			
			delete arr[0];
			alert(arr);//13,14,15,16;

元素被删除了,但数组仍然有 3 个元素
因为 delete obj.key 是通过 key 来移除对应的值。对于对象来说是可以的。但是对于数组来说,我们通常希望剩下的元素能够移动并占据被释放的位置。我们希望得到一个更短的数组。
splice
arr.splice(1,4)
删除 从哪一个下标开始,删除几个元素。

var arr=[12,13,14,15,16]
			arr.splice(1,4)
			alert(arr);

arr.splice(1,4,“sdfs”,“sdfs”);也可以删除后继续添加

indexOf
查询下标 注意注意注意===完全等于

var arr=[12,13,14,15,16]
			alert(arr.indexOf(12));//0

练习
1.书写五个文本框,对五个文本框中的内容进行排序——把排序后的内容重新放入五个框。

<body>
		<input type="" name="input" id="d1" value="" /><br>
		<input type="" name="input" id="d2" value="" /><br>
		<input type="" name="input" id="d3" value="" /><br>
		<input type="" name="input" id="d4" value="" /><br>
		<input type="" name="input" id="d5" value="" /><br>
		<button type="button" onclick="aaa()">排序</button>
		
		<script type="text/javascript">
 function aaa(){
    
    
 
				 arr[0]=document.getElementById("d1").value;
				 arr[1]=document.getElementById("d2").value;
				 arr[2]=document.getElementById("d3").value;
				 arr[3]=document.getElementById("d4").value;
				 arr[4]=document.getElementById("d5").value;
				 for(var j=0;j<arr.length-1;j++){
    
    
				 	for(var i=0;i<arr.length;i++){
    
    
				 		if(arr[i]>arr[i+1]){
    
    
				 			var temp =arr[i];
				 			arr[i]=arr[i+1];
				 			arr[i+1]=temp;			 				
				 		}
				 	}
					
				 }
				 alert(arr);
				 document.getElementById("d1").value=arr[0];
				 document.getElementById("d2").value=arr[1];
				 document.getElementById("d3").value=arr[2];
				 document.getElementById("d4").value=arr[3];
				 document.getElementById("d5").value=arr[4];
			 }
			 </script>

升级版
输入框没写和上面一样

//吧多个input的1值都赋值给inp 在让inp的值循环push给inpValue
			 function aaa(){
    
     
			 var inp =document.getElementsByTagName("input");
			 var inpValue= new Array(5);
		
			for(var i=0;i<5;i++){
    
    
				inpValue.push(inp[i].value);				
			}
			inpValue.sort(function(a,b){
    
    return a-b})
			inpValue.sort((a,b)>= a-b);
			
			for(var g=0;g<=inpValue.length;g++){
    
    
				
				inp[g].value=inpValue[g];
				
			}
			alert(inpValue);
			
			  }

猜你喜欢

转载自blog.csdn.net/qq_45438019/article/details/118926473
今日推荐