自学内容网 自学内容网

【Javascript Day11】数组的内置方法、添加获取、元素查询及练习、排序方法数组的内置方法

数组的内置方法

// js 语法中所有的数据类型都是从对象演变而来的
        var str = "abc";

        console.log( typeof str, str.constructor ); // string
        console.log( typeof str == "string" );
        
        var user = {};
        console.log( typeof user, user.constructor );
        

        var arr = [1,2];
        console.log( typeof arr ); // object
        
        // 数组的创建方式
        //      1. new Array();
        //      2. 字面量 [  ]
        console.log( arr );
        

判断变量是否为数组类型


        // 方式1:比较构造器
        //       变量.constructor 可以获取改变量的构造函数
        console.log( arr.constructor , arr.constructor == Array );
        // 方式2:使用 instanceof 比较构造器
        //       语法:  变量 instanceof 构造函数
        console.log( arr instanceof Array );
        // 方式3:使用专用数组类型验证函数  Array.isArray( 变量 )
        console.log( Array.isArray( arr ) );

数组的添加与获取

var names = ["鑫磊","明哲","航","嘉熙"];
        console.log(names);
        

1. 获取指定元素


        console.log( names[1] );
        // 数组变量.at(num);
        //      num >=0 下标获取
        //      num <0 倒数获取
        var item = names.at(1);
        console.log( item );
        console.log( names.at(-1) );

 2. 末尾添加和末尾删除


        var i = names.push( "荣轩" ); // 将新数据添加的数组的末尾,返回增加后的数组长度
        console.log( i , names );

        var temp = names.pop(); // 删除数组末尾的元素,返回被删除的元素
        console.log( temp , names );

        var tempArr = [];
        var temp1 = tempArr.pop(); // 返回undefined 表示没有元素被删除 - 出现在原始数据就是空数组
        console.log( temp1 );
       


 3. 首位添加和首位删除


        //      !! 首位操作,对整个数组的元素下标产生影响
        var namesA = ["鑫磊1","明哲1","航1","嘉熙1"];
        console.log( namesA );
        
        var j = namesA.unshift("博文"); // 将新数据增加到数组首位,返回增加后的数组长度
        console.log(j , namesA);

        var temp1 = namesA.shift(); // 删除数组首位的原始,返回被删除的元素值
        console.log(temp1,namesA);

数组元素的查询

var names = [ "果","立辉","睿渊","俊驰","睿渊","昊天","越泽" ];

1.  数组变量.indexOf( 查找值 )


        //     从下标0开始搜索,返回第一个等于查找值得元素下标,如果没有返回-1
        var a = names.indexOf("睿渊")
        console.log(a); // 2
        
        var b = names.indexOf("豆豆")
        console.log(b);

2.  数组变量.lastIndexOf( 查找值 ) 


        //     从最后一个下标开始搜索,返回倒数时第一个等于查找值得元素下标,如果没有返回-1
        var c = names.lastIndexOf("睿渊")
        console.log(c); // 4
        
        var d = names.lastIndexOf("豆豆")
        console.log(d);


        var nums = [21,13,32,56,47,33,31]
        /*


3.find()

从下标0开始查找第一个符合条件得元素,并返回元素值,如果找不到返回undefined

            数组变量.find( function(item,index,array){
                // find 会循环 nums 数组,循环过程中每个元素都会执行一次回调
                //      item :每次执行该方式时元素值
                //      index :每次执行该方式时元素对应得下标
                //      array :被循环得数组
                return true; // 表示当前循环得元素满足条件
                return false; // 表示当前循环得元素不满足条件
            } )
        */        
        var e = nums.find( function(item,index){
            // return true;
            // return false;
            return item % 2 == 0;
        } )
        console.log(e);
        

4.findIndex(item,index,array)

从下标0开始查找第一个符合条件得元素,并返回下标,如果找不到返回-1
        var f = nums.findIndex( function(item,index){
            return item % 2 == 0;
            // return false;
        } )
        console.log(f);

3.1 findLast(item,index,array)

从末尾开始查找第一个符合条件得元素,并返回元素值,如果找不到返回undefined
        var h = nums.findLast( function(item){
            return item%2==0;
        } )
        console.log(h);
        


4.1 findLastIndex(item,index,array)

从末尾开始查找第一个符合条件得元素,并返回下标,如果找不到返回-1
        var j = nums.findLastIndex( function(item){
            return item%2==0;
        } )
        console.log(j);


        // 数组变量.includes( 查找值 ) 判断查找值在数组中是否存在,返回true|false
        var flag = nums.includes( 99 );
        console.log(flag);

数组查找练习

 // 面试题:实现一个数组去重方法【你能实现几种数组去重方法】
        // 编写一个方法,接收一个数组参数,方法返回一个不带有重复元素得新数组
        //          实现对数组内重复元素得去重操作


Ⅰ indexOf方法


        var names = ["熠彤","鹭洋","晋鹏","雨泽","伟泽","熠彤","鹭洋","晋鹏","涛","熠彤","鹭洋","晋鹏","立轩"]
        // var newNames = ["熠彤","鹭洋","晋鹏","雨泽","伟泽","涛","立轩"]

        function heavyArr(arr){
            var newArr = [];
            // 1. 对数组进行循环,依次获取每个元素
            for (var i = 0; i < arr.length; i++) {
                // 2. 判断 newArr 数组中是否存在当前循环到得元素值
                //      !!! indexOf 可以等效替换成其它查询方法,但比较逻辑需要修改
                var index = newArr.indexOf( arr[i] );
                if(index==-1){
                    // 3. 如果不存在,说明当前循环到元素在 newArr 中没有重复
                    //    将该元素添加到 newArr 中
                    newArr.push( arr[i] )
                }
            }
            return newArr;
        }

        var arr = heavyArr( names );
        console.log(arr);

        var nums = [11,22,33,44,11,33,66,44,22];
        var newNums = heavyArr( nums );
        console.log(newNums);
    


        
Ⅱ find方法


        function heavyArr2(arr){

            var newArr = [];

            for (var i = 0; i < arr.length; i++) {

                var res = newArr.find( function(item){
                    // 对newArr 进行循环(遍历、迭代),判断newArr中是否包含 外面循环 arr 得元素值
                    return item == arr[i];
                } );

                if( res==undefined ){
                    newArr.push( arr[i] )
                }
               
            }
            return newArr;
        }


Ⅲ 纯for循环


var arr = ["睿渊","睿渊","果","立辉","睿渊","俊驰","昊天","越泽"];
var arr1 =[];
function quchong(arr){
    arr1.push(arr[0])
    end:for(i=1; i < arr.length; i++){
         for( var j = 0; j < arr1.length; j++ ){
            if(arr[i] == arr1[j]){
                continue end;
            }
        }
        arr1.push(arr[i])
    }
}
quchong(arr);
console.log(arr1);

数组排序方法

 var nums = [11,22,33,44,101,1,303,66,404,202];

数组变量.reverse() 数组元素反转方法


        //       + 返回反转后得数组
        //       + 该方法会直接改变操作数组,所以返回得数组其实就是操作得数组
        // var newArr = nums.reverse();
        // console.log("newArr:",newArr);

        nums.reverse();
        console.log("nums:",nums);
        

        var nums1 = [11,22,33,44,101,1,303,66,404,202];

        // 数组变量.toReversed() 数组元素反转方法
        //      + 返回一个全新得反转后得数组,不影响原始数组
        var newArr1 = nums1.toReversed();
        console.log("nums1:",nums1);
        console.log("newArr1:",newArr1);
        

        var nums2 = [11,22,33,44,101,1,303,66,404,202];


 数组排序方法


        // 数组变量.sort() 进行数组排序  ==> 不传递参数得情况下,是逐位比较
        //     + 返回排序后得数组结果
        //     + 该方法会直接改变操作数组,所以返回得数组其实就是操作得数组
        var sortNums2 = nums2.sort()

        console.log("nums2:",nums2 );
        console.log("sortNums2:",sortNums2 );

        var names = ["熠彤","鹭洋","晋鹏","雨泽","伟泽","涛","立轩"]
        // sort 在不接收参数得情况下,可以对非数值进行排序操作 ==> 是逐位比较
        names.sort();
        console.log( names );
        

        var nums3 = [11,22,33,44,101,1,303,66,404,202];
        var sortNums3 = nums3.sort( function( a,b ){
            // 通过返回 正值 表示不需要交换 a b
            // 通过返回 负值 表示需要交换 a b
            // return a-b; // 升
            return b-a; // 降
        } )
        console.log("nums3:",nums3);
        console.log("sortNums3:",sortNums3);

        
        var nums4 = [11,22,33,44,101,1,303,66,404,202];

        var sortNum4 = nums4.toSorted();
        console.log("nums4",nums4);
        console.log("sortNum4",sortNum4);

        var sortNum5 = nums4.toSorted(function(a,b){
            return a - b;
        });
        console.log("nums4",nums4);
        console.log("sortNum5",sortNum5);


原文地址:https://blog.csdn.net/clp20031101/article/details/145229059

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!