JavaScript的第9天

数组去重练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var arr=[1,2,5,1,5,2,25,2,2,2,2,2,6,7,4,2,4,34,2];
        /* 
            题目:去重一个数组中重复的数字
        */
       
        
        //遍历出数组所有的数
        for (let i = 0; i < arr.length; i++) {
            // 遍历出从第一个数开始后面的数
            for (let j = i+1; j <arr.length; j++) {
                // 判断,当i(当前数),等于j(当前数后的数)时,删除j
                if (arr[i]==arr[j]) {
                    // 使用splice方法删除对应索引位置的数字
                    arr.splice(j,1);
                    // 当删除后继续判断当前数字是否重复,使j--,再次循环判断
                    --j;
                }
            }
        }
        // 输出数组
        console.log(arr);
    </script>
</head>
<body>
    
</body>
</html>

数组的剩余方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //创建一个数组
        var arr1=["往往","掉今晚","单位"];
        //创建一个数组
        var arr2=["答复","发生的","大武当"];
        /* 
            concat()可以连接两个或多个数组,并将新的数组返回
                ---该方法不会对原数组产生影响
                ---该方法也可以在()传递元素到新的数组末尾
        */
        var result=arr1.concat(arr2);  //['往往', '掉今晚', '单位', '答复', '发生的', '大武当']
        var result=arr1.concat(arr2,"插入的","元素"); //['往往', '掉今晚', '单位', '答复', '发生的', '大武当', '插入的', '元素']
        console.log(result);
        
        
        /* 
            join()
                ---该方法可以将数组转换为一个字符串
                ---该方法不会对原数组产生影响,而是会将转换后的字符串作为结果返回
                ---在join()中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符
        */
        var result=arr1.join();    //往往,掉今晚,单位
        var result=arr1.join("1");  //往往1掉今晚1单位
        var result=arr1.join("-");  //往往-掉今晚-单位
        console.log(result);    
        console.log(typeof result);   //string   


        /* 
            reverse()
                ---该方法用来反转数组(前边的去后边,后边的去前边)
                ---该方法会直接修改原数组
        */
        var result=arr1.reverse();  //['单位', '掉今晚', '往往']
        console.log(result);


        /* 
            sort()
                ---可以用来对数组中的元素进行排序
                ---也会影响原数组,默认会按照Unicode编码排序
        */
        arr1= ["a","r","c","g","e","h"];
        result = arr1.sort();   //['a', 'c', 'e', 'g', 'h', 'r']
        console.log(result);

        /* 
            即使对于纯数字的数组,使用sort()排序时,也会按照Unicode编码进行排序,
                所以对数字进行排序时,可能会得到错误的结果
                arr1=[1,2,4,33,3,21,3,12,32,4];
                result = arr1.sort();   //[1, 12, 2, 21, 3, 3, 32, 33, 4, 4]
                console.log(result);


            我们可以自己来指定排序的规则
                我们可以在sort()添加一个回调函数,来指定排序的规则,
                    回调函数中需要定义两个形参,
                    浏览器将会分别使用数组中的元素作为实参去调用回调函数
                    使用哪个元素调用不稳定,但是肯定的是,在数组中,a一定在b前边
                ---浏览器会根据回调函数的返回值来决定元素的顺序,
                    如果返回一个大于0的值,则元素会交换位置
                    如果返回一个小于0的值,则元素位置不变
                    如果返回一个0,则认为两个元素相等,也不交换位置

                
                ---如果需要升序排列,则返回a-b,
                    如果需要降序排列,则返回b-a
        */
        arr1=[1,2,4,33,3,21,3,12,32,4];
        result = arr1.sort(function(a,b) {
        //    //1,  如果前边的数大
        //     if (a<b) {
        //         return -1;
        //     }else if(a=b){
        //         return 0;
        //     }else{
        //         return 1;
        //     }        //[1, 2, 3, 3, 4, 4, 12, 21, 32, 33]

        // 2,如果a-b大于0,返回正值,交换,否则不交换
        return a-b;
        });         //[1, 2, 3, 3, 4, 4, 12, 21, 32, 33]
        
        console.log(result);        

    </script>
</head>
<body>
    
</body>
</html>

1.垃圾回收

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            垃圾回收(GC)
                ---就像人生活的时间长了会产生垃圾一样,程序运行过程中也会产生垃圾,这些垃圾积攒过多以后,会导致程序的运行速度过慢,所以我们需要一个垃圾回收机制,来处理程序运行过程中产生的垃圾

                ---当一个对象没有任何的变量或属性对它进行引用,此时我们将永远无法操作该对象
                    此时这种对象就是一个垃圾,这种对象过多会占用大量的内存空间,导致程序运行变慢,所以这种垃圾必须进行清理。

                ---在js中拥有自动的垃圾回收机制,会自动将这些垃圾对象从内存中销毁,
                    我们不需要也不能进行垃圾回收的操作

                ---我们需要做的只是要将不再使用的对象设置为null即可
        */
        var a=new Object();
        // 设置a变量不再指向对应对象的内存地址,可以让原来的a对象指向的那个内存地址的对象变为垃圾, 
        a=null;
        console.log(a);     //null
    </script>
</head>
<body>
    
</body>
</html>

2.js中的数组

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            内建对象
            宿主对象
            自定义对象

            数组(Array)
                ---数组也是一个对象
                ---它和我们普通对象一样,也是用来存储一些值的
                ---不同的是普通对象是使用字符串作为属性名的,
                    而数组是使用数字来作为索引操作元素
                ---索引,
                    从0开始的整数就是索引
                ---数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储一些数据
        */

        // 创建数组对象
        var arr=new Array();

        // 使用typeof检查一个数组时,会返回Object
        console.log(typeof arr);

        /* 向数组中添加元素
            语法:数组[索引] = 值
        */
       arr[0]=10;
       arr[1]=11;

        /* 向数组中读取元素
            语法:数组[索引]
        */
       console.log(arr[0]);    //10
       console.log(arr[1]);    //11
       console.log(arr[5]);   //undefined

       /* 获取数组的长度
          可以使用length属性来获取数组的长度(元素的个数)
            语法: 数组.length
       */
      console.log(arr.length);  //2  因为索引从0开始

       /* 对于连续的数组,使用length可以获取到数组的长度(元素的个数)
           对应非连续的数组,使用length会获取到数组的最大的索引+1,
           且输出时显示一堆空属性

                尽量不要创建非连续的数组 */

        // 非连续的数组
        var arr2=new Array();
        arr2[0]=10;
        arr2[10]=20;
        console.log(arr2);     //(11) [10, 空属性 × 9, 20]
        
        /*
            修改length
                如果修改的length大于原长度,则多出来的部分会空出来
                如果修改的length小于原长度,则多出来的元素会被删除
        */
       //修改的length大于原长度
       arr2.length=20;
       console.log(arr2.length);  //20
       console.log(arr2);        //(20) [10, 空属性 × 9, 20, 空属性 × 9]

    //    修改的length小于原长度
        var arr3=new Array();
        arr3[0]=10;
        arr3[1]=5;
        arr3[2]=20;
        arr3.length=2; //会删除索引为2的元素
        console.log(arr3);  //[10, 5]
        
        /* 
            向数组的最后一个位置添加元素
            语法:数组[数组.length] = 值;
        */
       arr3[arr3.length]=30;
       arr3[arr3.length]=40;
       console.log(arr3);  //[10, 5, 30]
    </script>
</head>
<body>
    
</body>
</html>

3.数组字面量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //创建一个数组
        var arr=new Array();
        
        /* 使用字面量创建一个数组
            语法: []
        */
       var arr2=[];
       console.log(typeof arr2);   //object

        //使用字面量创建的数组,可以在创建时指定数组中的元素
        var arr3= [1,2,3,4,5];
        console.log(arr3);      //[1, 2, 3, 4, 5]
        console.log(arr3.length);   //5

        // 使用构造函数创建函数时,也可以同时添加元素,将要添加的元素作为构造函数的参数传递
        //元素之间使用,隔开
        var arr4=new Array(1,2,3,4);
        console.log(arr4);      //[1, 2, 3, 4]

        //创建一个元素为10的数组
        var arr5=[10];
        console.log(arr5);      //[10]

        //创建一个数组长度为10的数组
        var arr6=new Array(10);
        console.log(arr6);      //[空属性 × 10]

        //数组中的元素可以是任意的数据类型
        arr6=["hello",1,true,undefined,null];
        console.log(arr6[0]);   //hello
        console.log(arr6[3]);   //undefined

        // 也可以是对象(函数是特殊的对象)
        var Obj={
            name:"孙悟空",
            age:19
        };
        arr6[arr6.length]=Obj;
        console.log(arr6[arr6.length-1]);  //{name: '孙悟空', age: 19}

        //也可以是一个函数
        arr6[arr6.length]=function(){alert("这是一个数组中的函数");};
        console.log(arr6[arr6.length-1]);   //ƒ (){alert("这是一个数组中的函数");}
        // 调用数组里面的函数
        arr6[arr6.length-1]();   //输出"这是一个数组中的函数"
        
        // 也可以是一个数组,如下这种数组我们叫做二维数组
        arr6=[[1,2,3],[3,4,5]];
        // 取出二维数组中索引为0的一维数组
        console.log(arr6[0]);   //[1, 2, 3]
    </script>
</head>
<body>
    
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值