zoukankan      html  css  js  c++  java
  • 数组的基本属性和方法

            // 数组基本属性及方法
            // concat,合并数组,原数组不改变
            var arr=[1,2,3,4,5]
            var arr1=arr.concat(1,2,3);
            console.log(arr);//1,2,3,4,5
            console.log(arr1);//1, 2, 3, 4, 5, 1, 2, 3
            // 用concat实现数组扁平化
            var arr=[1,2,[500,600],3,[10,20,[300,400]]];
            var arr1=[]
            function arrChange(arr){
                for(var i=0;i<arr.length;i++){
                    if(arr[i].length){
                        arrChange(arr[i])
                    }else{
                        console.log(arr1)
                        arr1=arr1.concat(arr[i])
                    }
                }
            }
            arrChange(arr)
            console.log(arr);//原数组不变
            console.log(arr1);//扁平化后的一维数组
            
            // push添加到数组尾部,返回值为新数组长度
            var arr=[1,2,3,4,5];
            arr.push(10,20)
            console.log(arr);//1,2,3,4,5,10,20
    
            // pop删除数组最后一项,返回被删除的元素
            var arr=[1,2,3,4,5];
            arr.pop()
            console.log(arr);//1,2,3,4
    
            // unshift在数组头部添加元素,返回新数组长度
            var arr=[1,2,3,4,5];
            arr.unshift(10,20)
            console.log(arr);//10,20,1,2,3,4,5
    
            // shift删除第一项,返回被删除的元素
            var arr=[1,2,3,4,5];
            arr.shift()
            console.log(arr);//2,3,4,5
    
            // splice,删除、替换,返回被替换掉的元素组成的数组
            var arr=[1,2,3,4,5,6];
            var arr1=arr.splice(0);
            console.log(arr)//[]
            console.log(arr1)//1,2,3,4,5,6
    
            var arr=[1,2,3,4,5,6];
            var arr1=arr.splice(0,1);
            console.log(arr)//2,3,4,5,6
            console.log(arr1)//1
    
            var arr=[1,2,3,4,5,6];
            var arr1=arr.splice(0,2,100);
            console.log(arr)//100,3,4,5,6
            console.log(arr1)//1,2
            
            // join,将数组转换成用规定字符分割的字符串,原数组不改变,返回字符串
            var arr=[1,2,3,4,5]
            var arr1=arr.join('+');
            console.log(arr)//1, 2, 3, 4, 5
            console.log(arr1)//1+2+3+4+5
    
            // indexOf查找数组中是否有某一项,有返回下标,无返回-1,从前向后查找
            // indexOf参数1为要查找的元素,参数2位从哪里开始查找
            var arr=[1,2,3,4,5,1,2,3,4,5];
            var index=arr.indexOf(2,2);
            console.log(index);//6
            var index=arr.indexOf(2);
            console.log(index);//1
            
            // 假如一个元素在数组中出现多次,获取每次的下标
            // arr元素所在数组,item要查找的元素
            // 第一种
            function getArrIndex(arr,item){
                var arrIndex=[]
                var index=0
                for(var i=0;i<arr.length;i++){
                    // arrIndex存储查到的下标,判断如果查找到了,就让下次查找从当前下标的下一项开始
                    if(arrIndex.length){
                        index=index+1
                    }
                    index=arr.indexOf(item,index);
                    if(index<0){
                        break
                    }
                    arrIndex.push(index)  
                }
                return arrIndex
            }
            var arr=[1,2,3,4,5,5,1,2,3,4,5,6,7,5];
            var indexList=getArrIndex(arr,11)
            console.log(indexList)//[]
            var indexList=getArrIndex(arr,5)
            console.log(indexList)//[4,5,10,13]
    
            // 第二种
            function getArrIndex(arr,item){
                // 深复制元素所在数组
                var arrCopy=JSON.parse(JSON.stringify(arr));
                var arrIndex=[]
                for(var i=0;i<arrCopy.length;i++){
                    var index=arrCopy.indexOf(item)
                    if(index>-1){
                        // 每次从第0位开始查找,查找到直接删除元素,这样可以保证数组长度不变
                        delete arrCopy[index]
                        arrIndex.push(index)
                    }
                }
                return arrIndex
            }
            var arr=[1,2,3,4,5,5,1,2,3,4,5,6,7,5];
            var indexList=getArrIndex(arr,1)
            console.log(indexList)//[0,6]
            var indexList=getArrIndex(arr,5)
            console.log(indexList)//[4, 5, 10, 13]
    
    
            // lastIndexOf查找元素位置,从后向前查找
            var arr=[1,2,6,3,4,5,3,6];
            var index=arr.lastIndexOf(6)
            console.log(index)//7
    
            // slice复制数组的数据,参数1从哪开始,参数2到哪结束
            var arr=[1,2,3,4,5,6]
            var arr1=arr.slice(0,2)//截取下标为0和1的两位
            var arr1=arr.slice(0)//截取全部
            var arr1=arr.slice(-1)//截取最后一位
            var arr1=arr.slice(-3,-1)//截取倒数第3位和第4位
            var arr1=arr.slice(0,-1)//截取开始到倒数第2位
            console.log(arr);
            console.log(arr1);
    
            // reverse:倒序数组,但不排序,返回的数组就是原数组,原数组改变;
            // 例如:
                var arr=[1,2,5,4,3,6,7];
                var arr1=arr.reverse();
                console.log(arr1);
            // 结果就是7,6,3,4,5,2,1;
            // 不进行排序,只是单纯的反过来排列
            
            // 数组的归并和筛选
            // 筛选filter
            var arr=[1,2,3,4,5,6,7,8,9]
            var arr1=arr.filter(item=>{
                if(item>5){
                    return item>5
                }
            })
            console.log(arr)//[1,2,3,4,5,6,7,8,9]
            console.log(arr1)//[6,7,8,9]
            
            // 归并reduce,sum基础值,不赋值就是数组第一项,item是每一项
            // reduce共有四个参数,后两个分别为下标和数组本身
            var arr=[1,2,3,4,5,6,7,8,9]
            var sum=arr.reduce((sum,item)=>{
                console.log(sum,item)
                return sum+item
            },100)
            console.log(sum)//145

     

  • 相关阅读:
    针对专业人员的 TensorFlow 2.0 入门
    学习深度学习过程中的一些问题
    Leetcode_06_ZigZag Conversion (easy)
    leetcode_07_Reverse Integer (easy)
    独立游戏人:像素风格游戏制作分享(转)
    关于iphone开发中的@property和@synthesize的一些见解(转)
    iphone开发cocoa中nil,NSNull,Nil的使用区别
    Xcode6.1创建仅xib文件无storyboard的hello world应用(转)
    iOS 学习资料整理(转)
    hdoj1042ac
  • 原文地址:https://www.cnblogs.com/Alex-Song/p/12986506.html
Copyright © 2011-2022 走看看