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

     

  • 相关阅读:
    POJ 1015 Jury Compromise【DP】
    POJ 1661 Help Jimmy【DP】
    HDU 1074 Doing Homework【状态压缩DP】
    HDU 1024 Max Sum Plus Plus【DP,最大m子段和】
    占坑补题。。最近占的坑有点多。。。
    Codeforces 659F Polycarp and Hay【BFS】
    Codeforces 659E New Reform【DFS】
    Codeforces 659D Bicycle Race【计算几何】
    廖大python实战项目第四天
    廖大python实战项目第三天
  • 原文地址:https://www.cnblogs.com/Alex-Song/p/12986506.html
Copyright © 2011-2022 走看看