优秀的编程知识分享平台

网站首页 > 技术文章 正文

js中数组方法全解(js中数组方法全解是什么)

nanyue 2024-09-08 06:00:53 技术文章 4 ℃
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        console.log("---- concat方法讲解 ----")
            /*
                array.concat(value, ...)
                方法的作用:
                    方法concat()将创建并返回一个新数组,这个数组是将所有参数都添加到array中生成的。它并不修改array。
                    如果要进行concat()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。
                方法的参数:
                    要增加到array中的值,可以是任意多个。
                方法的返回值:
                    一个新数组
                底层实现业务逻辑:
                    1、创建一个新的数组,然后把当前数组的值放到新数组里面
                    2、判断arguments长度是否为0,如果为0,返回参数数组
                    3、如果arguments长度不为0,依次判断每个参数的是否为数组;
                        Array.isArray(argArr) 
                    4、如果不是数组,直接向新数组的最后添加即可
                        newArr[newArr.length] = 值;
                    5、如果是数组,那么遍历数组,然后把每次遍历的值都放在数组的末尾
                        for(){
                            newArr[newArr.length] = 遍历的值;
                        }
                    function concat(){
                        var newArr = new Array();
                        // 把this数组的值给放到newArr
                        if(arguments.length != 0){
                            for(var i in arguments){
                                var v = arguments[i];
                                if(Array.isArray(v)){ //表示参数是一个数组
                                    // 遍历v,然后
                                    for(){
                                        newArr[newArr.length] = 遍历的值;
                                    }
                                }else{ //不是一个数组
                                    newArr[newArr.length] = 值;
                                }
                            }
                        }
                        return newArr;
                    }
            */
            // 定义一个数组
        var arr1 = ["小明", "小红", "小黑"]; // JS数组可以存储任意类型
        console.log(arr1.concat());
        // 把参数追加到原数组末尾,不会修改原数组,生成一个新数组
        // var newArr1 = arr1.concat(100, true, "Hello"); // concat并不修改原数组,而是生成了一个新数组。    
        var argArr = new Array(1, 2, 3); //参数数组
        var obj = {
            name: "zhangsan"
        };
        // 其实底层是使用关键字instanceof
        // Array.isArray(argArr)    检测一个对象是否是数组
        console.log("argArr是否是一个数组:" + Array.isArray(argArr)); // true
        console.log("obj是否是一个数组:" + Array.isArray(obj)); // false
        console.log("Hello是否是一个数组:" + Array.isArray("Hello")); // false
        var newArr1 = arr1.concat(obj); // concat如果传递的是一个参数数组,那么会把参数数组里面的每一个元素都追加到原数组的末尾,不会作为整体存储
        console.log("concat操作完毕之后,arr1数值的值:" + arr1);
        console.log("concat操作完毕之后,返回值是一个新数组:" + newArr1);
        console.log(newArr1)
        console.log("---- join方法讲解 ----")
            /*
                array.join( ) 
                array.join(separator)
                方法的作用:
                    方法join()将把每个数组元素转换成一个字符串,然后把这些字符串连接起来,在两个元素之间插入指定的separator字符串。返回生成的字符串。
                    该方法简单来说,就是把数组转换为指定格式的字符串
                方法的参数:
                    在返回的字符串中用于分隔数组元素的字符或字符串,它是可选的。如果省略了这个参数,用逗号作为分隔符。
                方法的返回值:
                    拼接好的字符串
                底层实现业务逻辑:
                    1、创建一个空字符串
                    2、判断arguments的长度,如果长度为0,则遍历this数组,使用,拼接字符串
                    3、如果长度不为0,则取arguments下标0的值进行拼串;
            */
            // toString()  String()     任意类型转换为字符串类型
        var arr2 = [123, 456, 789];
        var arr2Str = arr2.join("#"); //没有传递参数,那么使用逗号作为分隔符
        console.log("join方法执行完毕,返回值类型:" + typeof arr2Str);
        console.log(arr2Str);
        console.log("---- pop方法讲解 ----")
            /*
                array.pop( )
                方法的作用:
                    方法pop()将删除array的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,返回undefined。 
                方法的返回值:
                    array的最后一个元素。
                底层实现业务逻辑:
                    1、先判断当前数组的长度是否为0
                    2、如果为0,则什么都有不处理  return;
                    3、如果数组长度不为0,this.length = this.length - 1;
                    4、在修改数组长度之前,把arr[this.length-1]保存下来,然后反馈
            */
        var arr3 = [];
        var deleteEle = arr3.pop();
        console.log("pop操作完毕之后,arr3:" + arr3);
        console.log("返回值:" + deleteEle);
        /*
            学习方法:
                1、方法的功能
                2、方法的参数
                3、方法的返回值
            
        */
        console.log("---- push方法讲解 ----")
            /*
                array.push(value, ...)
                方法push()将把它的参数顺次添加到array的尾部。它直接修改array,而不是创建——个新的数组。方法push()和方法pop()用数组提供先进后出栈的功能。
                返回值:把指定的值添加到数组后的新长度。
                参数:value, ... 要添加到array尾部的值,可以是一个或多个。
            */
        var arr4 = [11, 22, 33, 44];
        // var arr4Legth = arr4.push("小黑", "小白", 110);
        arr4.push(["小黑", "小明"]);
        console.log("push操作完毕之后,arr4的值:" + arr4)
        console.log(arr4);
        // console.log(arr4Legth);
        console.log("---- reverse方法讲解 ----")
            /*
                array.reverse( )
                描述:Array对象的方法reverse()将颠倒数组中元素的顺序。它在原数组上实现这一操作,即重排指定的array的元素,但并不创建新数组。如果对array有多个引用,那么通过所有引用都可以看到数组元素的新顺序。
            */
        var arr5 = [11, 22, 33, 44, 55];
        var x = arr5.reverse();
        console.log("arr5调用reverse之后:" + arr5);
        console.log(x); // 把反转之后的数组反馈
        console.log("---- shift方法讲解 ----")
            /*
                array.shift( )
                描述:方法shift()将把array的第—个元素移出数组,返回那个元素的值,并且将余下的所有元素前移一位,以填补数组头部的空缺。如果数组是空的,shift()将不进行任何操作,返回undefined。注意,该方法不创建新数组,而是直接修改原有的数组。
                返回值:数组原来的第一个元素。
            */
        var arr6 = [11, 22, 33, 44, 55];
        var deleteEle = arr6.shift();
        console.log("arr6调用shift之后:" + arr6);
        console.log("删除的元素是:" + deleteEle);
        console.log("---- unshift方法讲解 ----")
            /*
                array.unshift(value, ...)   
                描述:方法unshift()将把它的参数插入array的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组新的元素0,如果还有第二个参数,它将成为新的元素1,以此类推。注意,unshift()不创建新数组,而是直接修改原有的数组。
                返回值:数组的新长度
                参数:value, ... 要插入数组头部的一个或多个值。
            */
        var arr7 = [11, 22, 33, 44, 55];
        // var arr7Length = arr7.unshift("xx", "yy");
        var arr7Length = arr7.unshift(["xx", "yy"]);
        console.log("arr7调用unshift之后:" + arr7);
        console.log("arr7调用unshift返回值:" + arr7Length);
        console.log("---- slice方法讲解 ----")
            /*
                array.slice(start, end)
                描述:方法slice()将返回数组的一部分,或者说是一个子数组。返回的数组包含从start 开始到end之间的所有元素,但是不包括end所指的元素。如果没有指定end,返回的数组包含从start开始到原数组结尾的所有元素。
                返回值:一个新数组,包含从start到end(不包括该元素)指定的array元素。
                参数
                    start 数组片段开始处的数组下标。如果是负数,它声明从数组尾部开始算起的位置。 也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。
                    end 数组片段结束处的后一个元素的数组下标。如果没有指定这个参数 包含从start开始到数组结束的所有元素。如果这个参数是负数, 从数组尾部开始算起的元素。
            */
        var arr8 = ["xx", "yy", "zz", "kk", "jj"];
        var sliceArr1 = arr8.slice(2); //从下标2开始,截取到数组的末尾,生成一个新数组 ["zz", "kk", "jj"]
        console.log("从下标2开始截取,得到子数组:" + sliceArr1);
        var sliceArr2 = arr8.slice(1, 4); // 从下标1开始,截取到下标4,但是不包含下标4 ["yy", "zz", "kk"]
        console.log("从下标1开始,截取到下标4,得到子数组:" + sliceArr2)
        var sliceArr3 = arr8.slice(-3); // 从倒数第三个,截取到末尾 ["zz", "kk", "jj"]
        console.log("从倒数第三个截取到末尾,得到数组:" + sliceArr3)
        var sliceArr4 = arr8.slice(-4, 3); // ["yy", "zz"]  
        console.log(sliceArr4);
        console.log("---- splice方法讲解 ----")
            /*
                array.splice(start, deleteCount, value, ...)
                方法作用: 可以实现数组元素的添加、删除、替换;
                参数
                start :开始插入和(或)删除的数组元素的下标。
                deleteCount :从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。
                value, ... :要插人数组的零个或多个值,从start所指的下标处开始插入。
            */
        // splice实现数组元素的删除
        // pop() 尾部删除   shift() 头部删除
        var arr9 = ["xx", "yy", "zz", "kk", "jj"];
        // arr9.splice(arr9.length - 1, 1); // 使用splice替代pop()
        // arr9.splice(0, 1); // 使用splice替代shift()
        // 如果是做数组头部或尾部元素的删除,那么还是推荐使用pop()和shift()
        // 但是如果要一次性删除多个或任意位置的数组元素,那么就要使用splice()
        // arr9.splice(1, 3);
        // splice实现数组元素的添加
        // push() 尾部添加   unshift() 头部添加
        // arr9.splice(arr9.length, 0, 110); //使用splice替代push() 
        // arr9.splice(0, 0, 110); // 使用splice替代unshift()
        // 如果是做数组头部或尾部元素的添加,那么还是推荐使用push()或unshift()
        // 但是如果要添加到指定位置,那么就使用splice()
        // arr9.splice(2, 0, 110, 119);
        // splice实现数组元素的替换, 删除之后新增
        // arr9.splice(1, 2, 110, 119)
        console.log(arr9)
        console.log("---- sort方法讲解 ----")
            /*
                array.sort( ) 
                Array.sort( ) 对数组元素进行排序 
                array.sort( ) array.sort(orderfunc)
                参数
                orderfunc 用来指定按什么顺序进行排序的函数,可选。
                返回值对数组的引用。注意,数组在原数组上进行排序,不制作副本。
                描述
                方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较。
                如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b
                参数
                orderfunc 
                用来指定按什么顺序进行排序的函数,可选。
            */
        var arr10 = [1111, 4, 38, 9];
        // arr10.sort(); //如果没有传递参数,那么把数组元素转换为字符串进行比较;
        arr10.sort(function(a, b) {
            // 如果排序函数的返回值是a - b;那么是升序排列! 如果是b - a,则是降序排列
            // return a - b;
            return b - a;
        });
        console.log("sort没有传递参数进行排序:" + arr10);
        console.log(typeof arr10.toLocaleString());
        /*
            1、JS数组中concat()和push()的区别?
            2、JS数组中pop()、push()、shift()、unshift()的作用
            3、如下代码的执行结果:
                 var arr8 = ["xx", "yy", "zz", "kk", "jj"];
                 var sliceArr4 = arr8.slice(-4, 3); // ["yy", "zz"]  
            4、JS数组中slice()和splice()的区别?     
        */
        // var arr = [11, 22, 33];
        // var str = arr[0] + ""; // "11"
        // for (var i = 1; i < arr.length; i++) {
        //     str += "#" + arr[i];
        // }
        // console.log(str);
        var arrx = [1, 2, 7, 3, 4];
        // function rv(arr) {
        //     var newArr = new Array();
        //     for (var i = 0; i < arr.length; i++) {
        //         newArr[i] = arr[arr.length - 1 - i];
        //     }
        //     return newArr;
        // }
        /*
            0   3
            1   2
        */
        function rv(arr) {
            for (var i = 0; i < arr.length / 2; i++) {
                var temp = arr[i];
                arr[i] = arr[arr.length - 1 - i];
                arr[arr.length - 1 - i] = temp;
            }
            return arr;
        }
        console.log(rv(arrx));
    </script>
</body>
</html>
最近发表
标签列表