JavaScript之数组

1.数组的概念

所谓数组,是有序的元素序列。(一组有序 数据)

js的数组可以包含任意数据类型,数组中的元素同场是同一种类型。

2.数组的构建方式

   2.1字面量

  var arr = [1,2,3,4,5];

   2.2构造函数

  var arr1 = new Array( );              //创建一个空数组

            var arr1 = new Array();//创建了一个空数组
			
			console.log(arr[0]);//0表示的索引(下标)取到的是数组的第一个值(元素)
			console.log(arr[arr.length-1],arr.length);
			console.log(arr[6]);
			
			console.log(arr1.length);
			
			var arr2 = new Array(5);//传一个参数时,参数表示数组的长度
			console.log(arr2.length,arr2);
			var arr3 = new Array(1,2);//当传两个或以上参数时,参数表示数组元素
			console.log(arr3.length,arr3);

3.数组操作

push()    向数组的尾部追加元素,可以接受n个参数,返回数组的长度.

pop()     从数组的尾部删除一个元素,不接受参数,返回删除的元素,原数组发生改变。

unshift()    向数组的头部追加元素,可以接受n个参数,返回数组的长度。

shift()     从数组的头部删除一个元素,不接受参数,返回删除的元素,原数组发生改变。

slice()     截取数组,接受最多两个参数,如果没有参数,返回原数组
            //一个参数,从该参数对应的索引开始截取,直至结束
            //两个参数,从第一个参数对应的索引开始截取,到第二个参数对应的索引结束,但不包括第二个参数对应索引位的元素

splice()     截取数组
            //一个参数,从该参数对应的索引开始截取,直至结束,返回截取的数组,原数组发生改变
            //两个参数,从第一个参数对应的索引开始截取,截取第二个参数表示的个数(长度),返回截取的数组,原数组发生改变
            //第三个及以上的参数会被添加原数组当中,注意,是从截取开始的索引位添加

reverse()     数组翻转,不接受参数,原数组发生改变。

sort()     数组排序

arr.sort(function(a,b){
                //return a - b;从小到大
                return b - a;//从大到小
            })
            
            console.log(arr);

join()     将数组转换成字符串,以参数来进行拼接。

concat()    把多个数组合并成一个数组.

4.数组的遍历

var arr = [1,2,3,4];
			console.log(arr[0],arr[1]);
			for(var i = 0; i < arr.length; i++){
				console.log(arr[i]);
			}

for(var i in arr){ //i对应索引
				//document.write(i+"=>"+arr[i]+"<br>");//key=>value
				console.log(i,arr[i]);
			}

for in 遍历对象比较多;

var obj = {name:"john",age:20,score:[1,2,3,4]};
			for(var i in obj){
				//console.log(i,obj.i);//obj.i 会认为obj中有一个属性名为i,实际上是没有的,i是一个变量
				//i这个变量对应的是属性名name和age
				//console.log(i,obj[i]);//第一次遍历 i=="name" obj["name"]  第二次遍历时 i=="age" obj["age"]
			}

5.数组排序

   5.1 sort

sort() 数组排序                     //默认字符串排序

arr.sort(function(a,b){            //数字排序
                //return a - b;    从小到大
                return b - a;        //从大到小
            })
            
            console.log(arr);

   5.2 冒泡排序

            var arr = [2,44,3,6,39,99,33,1,54];
			//冒泡排序从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序。
			function bubbleSort(arr){
				for(var i = 0;i < arr.length-1; i++){ //轮数
					for(var j = 0;j < arr.length - 1 - i; j++){//次数
						if(arr[j] > arr[j+1]){
							var temp = arr[j];
							arr[j] = arr[j+1];
							arr[j+1] = temp;
						}
					}
				}
				return arr;
			}
			
			console.log(bubbleSort(arr));

   5.3 选择排序

            /*选择排序 
			每次遍历确定一个最小值,
			第几次遍历就把这个最小值放在数组的第几个位置
			然后从后面的元素再次获得最小值,在放到数组前端,
			重复上两个步骤,知道遍历到数组的最后一个元素
			有多少个元素,就要遍历多少次*/
			function selectSort(arr){
				
				for(var i = 0;i < arr.length -1 ;i++){//轮数
					var minIndex = i;                    //假定第一个数为最小值
					for( var j = i+1; j<arr.length;j++){//比较次数
						if(arr[minIndex]>arr[j]){
							minIndex = j;
						}
					}
					var temp = arr[i];
					arr[i] = arr[minIndex];
					arr[minIndex] = temp;
				}
				return arr;
			}
			console.log(selectSort(arr));

6. 堆栈及参数传递

js内存分为堆区和栈区。

 基本类型: 
存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配 
5种基本数据类型:undefined,Null,Boolean,Number和String,它们是直接按值存放的,所以可以直接访问 

引用类型: 
存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况进行特定的分配。 
当我们需要访问引用类型(如对象,数组,函数等)的值,首先从栈中获得该对象的地址指针,然后从堆内存中取得所需要的数据

            var a1 = [10];
		    var b1 = a1;
			a1.push(20);
			console.log(a1,b1);//[10,20] [10,20]

7.json格式

var data = {"name":"john","age":20};//标准json对象,属性名必须加双引号
			var obj = {name:"john",age:20};//json格式的数据
			var arr = [1,2,3];//json格式的数据

8. 小练习 

<script type="text/javascript">
			//定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。
			
			var arr = [];
			var NewArr = [];
			var average = 0;
			arr.length = 30;
			for(var i = 1; i <= arr.length; i++)
			{
			arr[i - 1] = 2*i;
			//将arr赋值 arr[i - 1] 是因为数组下标从0开始
		
			if(i % 5 !== 0)
				//做判断使之五个数为一组然后将每组的平均值放入另一个数组中
			{
			average += arr[i - 1];
				}else
				{
				NewArr.push(average/5);
				average = 0;
				}
				}
				document.write(arr);
				document.write("<br />");
				document.write(NewArr);

		</script>
原文地址:https://www.cnblogs.com/a-peppa-pig/p/9460168.html