zoukankan      html  css  js  c++  java
  • JavaScript基础知识五

    1、数组
      1、数组是引用类型的对象
            1、原始类型(基本类型/值类型) :将数据保存在内存的栈(stack)中的
            2、引用类型:将真正的数据保存在内存的堆(heap)中,在栈中会对堆中的地址进行 引用
            3、undefined 与 null
                1、undefined :声明变量未赋值
                2、null :空,即让当前对象不再指向任何的空间,主动释放空间.在程序中,如果不再使用某对象的话,尽可能将其设置为 null
            4、面试题
                1、有如下代码 分析结果
                    <script>
                        function changeArray(arr){
                            arr[0] = "鲁班七号";
                            arr[1] = "程咬金";
                        }
    
                        var array = ["大乔","小乔"];
                        changeArray(array);
                        console.log(array); //结果:鲁班七号,程咬金
                    </script>
    

    如图所示:

    
                        
                2、有如下代码 分析结果
                    <script>
                        function changeArray(arr){
                            arr = new Array("鲁班七号","程咬金");
                        }
                        var array = ["大乔","小乔"];
                        changeArray(array);
                        console.log(array); //结果:大乔,小乔
                    </script>
                原因:按引用传递
                    引用类型的数据在做参数传递时,实际上传递的是地址(副本),而不是真正的值
    

    如图所示:

    
    
    
        2、关联数组
            php中:$array=["name"=>"西门庆"];
            以数字作为下标的数组,称为"索引数组"
            以字符串作为下标的数组,称为"关联数组"
            在JS中的关联数组:
                var array = [];
                array["字符串下标"]=值;
                ex:
                    var array = [];
                    array["西游记"] = "古代神话故事";
                    array["红楼梦"] = "古代爱情故事";
                    array["水浒传"] = ["西门庆","潘金莲","武大郎"];
    
                    console.log(array.length); 结果:0
                注意:
                    1、关联数组中,字符串下标的内容是不记录到length中的
                    2、关联数组中,只能使用字符串作为下标取值,索引下标不能用
        3、for ... in
            遍历出任意数组中的字符串下标和索引下标
            语法:
                for(var 变量 in 数组){
                    变量:字符串下标 或 索引下标
                    注意:变量的数据类型为 string
                }
        4、排序 - 冒泡排序
            1、什么是冒泡排序
                将一组数字,按照从小到大的方式排列
                原理:
                    两两比较,小的靠前
                特点:
                    var arr = [23,9,78,6,45];
                    1、n个数字,比较了n-1轮(外层循环)
                        for(var i=1;i<arr.length;i++){}
                    2、每轮中的比较次数(内层循环)
                        随着轮数的增加,比较次数在减少
                        第一轮:比较的次数,比轮数少1次
                        第二轮:比较的次数,比轮数少2次
                        for(var j=0;j<arr.length-i;j++){}
                    3、每次比较时,如果第一个数字大于第二个数字,则交换位置
                        if(arr[j] > arr[j+1]){
                            交换 arr[j] 和 arr[j+1] 的位置
                        }
    
    2、数组中的常用方法
         1、toString()
            作用:将一个数组转换为字符串,并返回转换后的结果
            语法: var str = 数组对象.toString();
    
        2、join()
            作用:将数组的元素通过指定的字符串连接到一起,并返回连接后的字符串
            语法:var str = 数组对象.join("字符串");
    
        3、concat()
            作用:拼接两个或更多的数组,并返回拼接后的结果
            语法:
                var result = 数组对象.concat(数组1,数组2,... ...);
            注意:
                1、concat不会改变现有数组,而是返回拼接后的结果
                2、要拼接的数据不一定是数组,也可以是其它类型的数据
    
        4、slice()
            作用:截取子数组,从指定的数组中,截取几个连续的元素组成一个新数组
            语法:
                var arr = 数组名.slice(start,end);
                start:从哪个下标位置处开始截取,取值为正,从前向后算,取值为负,从后向前算
                           0      1        2       3
                var arr=["中国","美国","俄罗斯","加拿大"];
                           -4     -3       -2      -1
                end : 指定结束位置处的下标(不包含),该参数可以省略,省略的话相当于是从 start 一直截取到 结束;
            注意:
                1、该函数不会影响现有数组,会返回新的子数组
    
        5、splice()
            作用:允许从指定数组中,删除一部分元素,同时再添加另一部分元素
            语法:arr.splice(start,count,e1,e2,... ...);
                start : 要添加或删除元素的起始下标位置
                count : 指定要删除的元素个数,取值为0表示不删除
                e1,e2,... : 要增加的元素们(可选的)
                
                返回值:返回一个由删除的元素所组成的数组
            注意:该函数会改变现有数组的结构
    
        6、reverse()
            作用:将数组进行反转
            语法:数组名.reverse();
            注意:该函数会改变当前数组的内容
        7、sort()
            作用:排序,默认情况下,按照数组的元素们的Unicode码进行升序排序。(默认按照字符串的方式去排列的)
            语法:数组名.sort();
            注意:该函数会改变当前数组的内容
    
            特殊:允许自定义排序规则(排序函数),从而实现对数字的升降序排序
                语法:数组名.sort(排序函数);
            ex:
                1、将数字升序排序
                    var arr = [78,165,92,8,34,13];
                    //定义升序的排序函数
                    function sortAsc(a,b){
                        return a-b;
                    }
                    //为arr排序指定排序函数
                    arr.sort(sortAsc);
                    原理:
                        1、指定排序函数-sortAsc,定义两个参数a,b,表示的是数组中相邻的两个数字
                        2、将排序函数指定给数组的sort()函数。数组会自动传递数据到sortAsc()中,如果sortAsc函数的返回值>0的话,则交换两个数字的位置,否则不变
            
            使用匿名函数指定排序函数:
                匿名函数:是一个没有名称的函数,只针对某一功能而存在
                arr.sort(排序函数);
    
                匿名函数:
                arr.sort( function(a,b){return a-b;} );
  • 相关阅读:
    day 22 反射,双下方法
    day 21 封装,多态,类的其他属性
    day 20 类与类之间的关系,继承2
    day 19 类的名称空间,组合,派生
    day 18 类,对象
    day 17 re模块
    注意NULL
    SQL_DISTINCT
    重载赋值运算符
    随机序列问题
  • 原文地址:https://www.cnblogs.com/mountboy/p/13542814.html
Copyright © 2011-2022 走看看