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>
</head>
<body>
    

    <script>

        // 纯粹的二维数组
        // 有一个 二维数组 里边的值全部都是数字,将二维数组中每一个数字 计算 相加之和
            // var arr = [[32,32,545],[5,45,75,326,423],[11,22,33]]
        // 编写一个函数,传入 数组作为参数, 返回计算结果


        // 不纯粹的二维数组
        // 有一个 二维数组 里边的值全部都是数字,将二维数组中每一个数字 计算 相加之和
            var arr = [[32,32,545],4234,423,[5,45,75,326,423,],434,[11,22,33]]
        // 编写一个函数,传入 数组作为参数, 返回计算结果


        function sum(a){
            var s = 0;;

            for(var i=0;i<a.length;i++){
                // console.log(a[i]);

                if(Array.isArray(a[i])){
                    for(var j=0;j<a[i].length;j++){
                        s += a[i][j];
                    }
                }else{
                    s += a[i];
                }
            }

            return s;
        }

        var num1 = sum(arr)
        console.log(num1);  // 6640

        console.log(sum([[11,22],33,[44,55],66]));  // 231

        console.log(sum([[1,2,3],[4,5,6],[7,8,9,10]]));  // 55
        

        // 定义一个数组,
        // 最终的长度需要为30,
        // 按顺序分别赋予从2开始的偶数为值;(通过遍历数组为数组的每一项赋值) push()
        // 然后按顺序每五个数求出一个平均值,放在另一个数组中并输出
        // var arr1 = [2,4,6,8,10,12,....,60]
        // var arr2 = [6,...]

        var arr1 = [];
        for(var n=1;n<=30;n++){
            arr1.push(n*2);
        }
        console.log(arr1);  // [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60]

        var arr2 = [];

        var he = 0;   // 计算 数字相加之和

        var ji = 0;  // 计数  给 he加了几个值

        for(var m in arr1){
            he += arr1[m];

            ji++;

            if(ji%5===0){
                arr2.push(he/5);

                he = 0;
            }
        }
        console.log(arr2);  // [6, 16, 26, 36, 46, 56]

        

        // 通过循环按照顺序为一个 5*5的二维数组arr赋值1-25的整数,然后输出该数组的左下半三角
        // 1、循环赋值得到的数组为
            // [
            //     [1,2,3,4,5],
            //     [6,7,8,9,10],
            //     [11,12,13,14,15],
            //     [16,17,18,19,20],
            //     [21,22,23,24,25]
            // ]
        // debugger;;
        var narr = [];

        var numarr = [];
        for(var o=1;o<=25;o++){
            numarr.push(o);
            if(o%5==0){
                narr.push(numarr)

                numarr = [];
            }
            
        }
        console.log(narr);  // 
            
        // 2、最终输出得到的结果  document.wirte()
            // 1+
            // 6+7+
            // 11+12+13+
            // 16+17+18+19+
            // 21+22+23+24+25+

        for(var h=0;h<narr.length;h++){

            for(var g=0;g<=h;g++){
                
                document.write(narr[h][g]+'+');

            }

            document.write('<br>')

        }
    </script>
</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>
</head>
<body>
    


    <script>

        var arr1 = [12,66,true,'haha',12,false,true,999,'world',true,456,'haha'];
        console.log(arr1);  


        // indexOf()
            // 查找数组中 被查找的值 第一次出现的索引位置
            // 此方法 不会改变 原数组
            // 此方法的返回值是
                // 如果 数组中 存在这个 被查找值 返回 第一次出现的索引(下标)
                // 如果 数组中 不存在这个 被查找值 返回 -1

        var a = arr1.indexOf('haha');
        console.log(a);  // 3

        var b = arr1.indexOf(true);
        console.log(b);  // 2
        
        var c = arr1.indexOf(999);
        console.log(c);  // 7

        var d = arr1.indexOf('hello');
        console.log(d);  // -1

        console.log(arr1); 

        console.log('-----------------华丽的分割线--------------');

        // lastIndexOf()
            // 查找数组中 被查找的值 最后一次出现的索引位置
            // 此方法 不会改变 原数组
            // 此方法的返回值是
                // 如果 数组中 存在这个 被查找值 返回 最后一次出现的索引(下标)
                // 如果 数组中 不存在这个 被查找值 返回 -1

        var e = arr1.lastIndexOf('haha');
        console.log(e);  // 11

        var f = arr1.lastIndexOf(true);
        console.log(f);  // 9
        
        var g = arr1.lastIndexOf(999);
        console.log(g);  // 7

        var h = arr1.lastIndexOf('hello');
        console.log(h);  // -1

        console.log(arr1); 
        



    </script>
</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>
</head>
<body>
    

    <script>

        var arr1 = [12,66,true,'haha',12,false,true,999,'world',true,456,'haha'];
        console.log(arr1);  


        var arr = [];

        for(var i in arr1){
            if(arr.indexOf(arr1[i]) === -1){
                arr.push(arr1[i]);
            }
        }

        console.log(arr);  // [12, 66, true, 'haha', false, 999, 'world', 456]




        // 封装 实现数组去重的 方法
        function notRepetition(narr){
            var arr = [];

            for(var i in narr){
                if(arr.indexOf(narr[i]) === -1){
                    arr.push(narr[i]);
                }
            }

            return arr;
        }


        var a1 = notRepetition([1,2,3,4,1,3,4,5,3,2,6]);
        console.log(a1);  // [1, 2, 3, 4, 5, 6]
    </script>
</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>
</head>
<body>
    

    <script>

        var arr1 = [1,2,3,4,5];
        console.log(arr1);
        var arr2 = ['a','b','c','d'];
        console.log(arr2);
        var arr3 = [true,false,'haha',999];
        console.log(arr3);


        // concat()
            // 将 多个数组 合并为 一个数组
            // 此方法 不会改变 原数组
            // 此方法的返回值是 拼接合并后的数组

        var a = arr1.concat(arr2);
        console.log(a);  // [1, 2, 3, 4, 5, 'a', 'b', 'c', 'd']

        console.log(arr1);  // [1, 2, 3, 4, 5]


        var b = arr3.concat(arr1,arr2);
        console.log(b);  // [true, false, 'haha', 999, 1, 2, 3, 4, 5, 'a', 'b', 'c', 'd']

        console.log(arr3);  // [true, false, 'haha', 999]
    </script>
</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>
</head>
<body>
    

    <script>


        // slice()
            // 通过 传入参数(索引) 实现 对于数组的截取
                // 第一个参数:表示开始截取数组的 索引(下标),包含此索引位置
                // 第二个参数:表示结束截取数组的 索引(下标),不包含此索引位置
                    // 第二个参数可以忽略不写,如果没有第二个参数
                        // 则从 第一个参数索引位置截取到数组的结束
                    // 第二个参数 可以为 负值
                        // 数组的最后一项值的索引就对应-1,依次往前推算
                    // 第二个参数的索引对应的值都不能在第一个参数的索引之前
            // 此方法 不会改变 原数组
            // 此方法的返回值是 截取数组的值组成的新数组

            var arr1 = [11,22,'aa','bb','cc',true,666,999,false];
            console.log(arr1); 

            var a = arr1.slice(3);
            console.log(a);  // ['bb','cc',true,666,999,false]

            var b = arr1.slice(5,7);
            console.log(b);  // [true,666]

            var c = arr1.slice(2,6);
            console.log(c);  // ['aa','bb','cc',true]

            var d = arr1.slice(4,-6);
            console.log(d);  // ['cc',true,666]


            console.log(arr1);  //  [11, 22, 'aa', 'bb', 'cc', true, 666, 999, false]

        console.log('-----------------华丽的分割线--------------');

        // splice()
            // 删除-替换:从 数组中 删除指定个数的元素(值),同时可以对被删除的部分进行替换操作
                // 第一个参数:表示开始删除数组的 索引(下标),包含此索引位置
                // 第二个参数:表示删除数组值的个数
                    // 第二个参数可以忽略不写,如果没有第二个参数
                        // 则从 第一个参数索引位置删除到数组的结束
                // 第三个参数及以后的每个参数:
                    // 都是 用来实现 替换 被删除的部分
                // 第二个参数 和 第三个参数及以后的参数 都不是必传,可忽略
            // 此方法 会改变 原数组
            // 此方法的返回值是 由数组被删除的部分组成的新数组
            var arr2 = [11,22,'aa','bb','cc',true,666,999,false];
            console.log(arr2);
            var aa = arr2.splice(3);
            console.log(aa);  // ['bb', 'cc', true, 666, 999, false]
            console.log(arr2);  // [11, 22, 'aa']


            var arr3 = [11,22,'aa','bb','cc',true,666,999,false];
            console.log(arr3);
            var bb = arr3.splice(3,3);
            console.log(bb);  // ['bb', 'cc', true]
            console.log(arr3);  // [11, 22, 'aa', 666, 999, false]


            var arr4 = [11,22,'aa','bb','cc',true,666,999,false];
            console.log(arr4);
            var cc = arr4.splice(5,2,'haha','hehe','heihei','enen');
            console.log(cc);  // [true, 666]
            console.log(arr4);  // [11, 22, 'aa', 'bb', 'cc', 'haha', 'hehe', 'heihei', 'enen', 999, false]
    </script>
</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>
</head>
<body>
    

    <script>



        

        // toString()
            // 将数组转换成字符串
            // 此方法 不会改变 原数组
            // 此方法的返回值是 转换后的字符串(将中括号去掉对中括号内部的内容添加了引号)

            var arr1 = [11,22,'aa','bb','cc',true,666,999,false];
            console.log(arr1)
            
            var str1 = arr1.toString();
            console.log(str1);  // '11,22,aa,bb,cc,true,666,999,false'

            console.log(arr1);  // [11, 22, 'aa', 'bb', 'cc', true, 666, 999, false]

        console.log('-----------------华丽的分割线--------------');

        // join
            // 将数组的 值 拼接成 字符串
            // 此方法 不会改变 原数组
            // 此方法的返回值是 转换后的字符串

            var arr2 = [11,22,'aa','bb','cc',true,666,999,false];
            console.log(arr2)

            // 如果 不传参 和 toString() 方法转换的结果是一样的
            var str21 = arr2.join();
            console.log(str21);  // '11,22,aa,bb,cc,true,666,999,false'

            // 如果传入 就会 使用 参数 将 数组的每一项值 进行 拼接 字符串
            var str22 = arr2.join(true);
            console.log(str22);  // 11true22trueaatruebbtruecctruetruetrue666true999truefalse

            var str23 = arr2.join(':');
            console.log(str23);  // '11:22:aa:bb:cc:true:666:999:false'

            console.log(arr2);  // [11, 22, 'aa', 'bb', 'cc', true, 666, 999, false]
    </script>
</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>
</head>
<body>
    

    <script>

        // forEach()
            // 用于遍历数组的方法
                // 传入一个函数作为参数,这个函数有 三个形参
                    // 第一个形参:是表示 数组的 元素(值)
                    // 第二个形参:是表示 数组值的 索引(下标)
                    // 第三个形参:是表示 数组本身
            // 此方法 不会改变 原数组
            // 此方法 没有返回值  也就是说返回值是undefined 
            var arr1 = [11,22,'aa','bb','cc',true,666,999,false];
            console.log(arr1)

            var nn = arr1.forEach(function(a,b,c){
                console.log(a,b,c);
            });

            console.log(nn);  // undefined


            console.log(arr1);  // [11, 22, 'aa', 'bb', 'cc', true, 666, 999, false]


        var numarr = [2,5,8,9,34,12];
        console.log(numarr);

        var sum = 0;

        numarr.forEach(function(item,index,narr){
            sum += item;
        });
        
        console.log(sum);
    </script>
</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>
</head>
<body>
    


    <script>


        // filter()
            // 过滤数组中 符合条件的 值
                // 传入一个函数作为参数,这个函数有 三个形参
                    // 第一个形参:是表示 数组的 元素(值)
                    // 第二个形参:是表示 数组值的 索引(下标)
                    // 第三个形参:是表示 数组本身
                // 参数函数中 return 表达式
            // 此方法 不会改变 原数组
            // 此方法的返回值是 
                // 参数函数中 return 的表达式 结果 为 true 的 值 组成的 新数组
            

        var numarr = [45,2,66,4,77,12,44,99,77];
        console.log(numarr);

        var numarr50 = numarr.filter(function(item,index,narr){
            return item>=50;
        });

        console.log(numarr50);  // [66, 77, 99, 77]

        console.log(numarr);  // [45, 2, 66, 4, 77, 12, 44, 99, 77]

    </script>
</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>
</head>
<body>
    

    <script>

        // map()
            // 映射数组
                // 传入一个函数作为参数,这个函数有 三个形参
                    // 第一个形参:是表示 数组的 元素(值)
                    // 第二个形参:是表示 数组值的 索引(下标)
                    // 第三个形参:是表示 数组本身
                // 参数函数中 return 运算表达式
            // 此方法 不会改变 原数组
            // 此方法的返回值是 
                // 参数函数中 return 的表达式 每一值参数计算后 结果 组成的 新数组
            

        var numarr = [45,2,66,4,77,12,44,99,77];
        console.log(numarr);

        var abc = numarr.map(function(item,index,narr){
            return item*2;   // '*'+item;
        });

        console.log(abc);  // [90, 4, 132, 8, 154, 24, 88, 198, 154]

        console.log(numarr);  // [45, 2, 66, 4, 77, 12, 44, 99, 77]


    </script>
</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>
</head>
<body>
    


    <script>

        var numarr1 = [44,12,66,39,99,22,8,3];
        console.log(numarr1);   // [44,12,66,39,99,22,8,3]
                                //  12 44
                                //     44 66
                                //        39 66
                                //           66 99
                                //              22 99
                                //                 8 99
                                //                   3 99
                                // [12,44,39,66,22,8,3,99]
                                //  12 44
                                //     39 44
                                //        44 66
                                //           22 66
                                //              8 66
                                //                3 66
                                // [12,39,44,22,8,3,66,99]
                                //  12 39
                                //     39 44
                                //        22 44
                                //           8 44
                                //             3 44
                                // [12,39,22,8,3,44,66,99]
                                //  12 39
                                //     22 39
                                //        8 39
                                //          3 39
                                // [12,22,8,3,39,44,66,99]
                                //  12 22
                                //     8 22
                                //       3 22
                                // [12,8,3,22,39,44,66,99]
                                //  8 12
                                //    3 12
                                // [8,3,12,22,39,44,66,99]
                                //  3 8
                                // [3,8,12,22,39,44,66,99]

        // 规律:
            // 有 多少个值参与比较,我们总共比较的轮数 是 值的个数-1 次
            // 每进行一轮比较,下一次的比较次数都会比上一次的比较次数 少1次
            // 有 多少个值参与比较,我们每一轮比较的次数 都是 值的个数-1 次

        // 控制 最终的比较 轮数
        for(var i=0;i<numarr1.length-1;i++){  // 2
            // 控制 每一轮的比较次数
            for(var j=0;j<numarr1.length-1-i;j++){
                // 判断 当前这一个 是否 大于 下一个值
                // 如果 成立 就需要 交换位置
                if(numarr1[j] > numarr1[j+1]){
                    // 交换位置
                    var x = numarr1[j];
                    numarr1[j] = numarr1[j+1];
                    numarr1[j+1] = x;
                }
            }
        }


        console.log(numarr1);  // [3, 8, 12, 22, 39, 44, 66, 99]



        // 封装 冒泡排序 的方法
        function bubblingSort(numarr){
            // 控制 最终的比较 轮数
            for(var i=0;i<numarr.length-1;i++){  // 2
                // 控制 每一轮的比较次数
                for(var j=0;j<numarr.length-1-i;j++){
                    // 判断 当前这一个 是否 大于 下一个值
                    // 如果 成立 就需要 交换位置
                    if(numarr[j] > numarr[j+1]){
                        // 交换位置
                        var x = numarr[j];
                        numarr[j] = numarr[j+1];
                        numarr[j+1] = x;
                    }
                }
            }

            return numarr;
        }


        var sarr1 = bubblingSort([2,8,3,6,5,1,7,4]);
        console.log(sarr1);  // [1, 2, 3, 4, 5, 6, 7, 8]

    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值