zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    例子2.5
    例子2.4
    例子2.3
    例2
    例2.1
    快闪PPT 快速入门教程 脑洞大开,特效随你定 ----口袋动画PA(初学易上手001):
    Linux 基础与应用教程 0011(DNS解析)
    课外阅读记录:001
    好的特效模板
    学习记住并且时常要打开去看的VIM
  • 原文地址:https://www.cnblogs.com/a-peppa-pig/p/9460168.html
Copyright © 2011-2022 走看看