1. 程式人生 > 其它 >陣列方法、去重、冒泡、選擇、反轉、扁平化陣列

陣列方法、去重、冒泡、選擇、反轉、扁平化陣列

some 陣列中是否有滿足條件的 返回布林值,如果遇到一個滿足條件的,就會直接跳出

 var arr=[1,2,3,4,5,6,7];
        var bool=arr.some(function(item,index,arr){
            return item>4;//判斷每個元素是不是有大於4的
        });
        console.log(bool);

ever 陣列中是否所有元素都滿足條件,返回布林值,如果遇到一個不滿足條件的,就會直接退出

filter 篩選陣列中滿足條件的元素,返回滿足條件元素組成的陣列

find 在陣列中找到滿足條件的第一個元素,返回,並且不在繼續向後迴圈

 var o=arr.find(function(item){
            return item.id===1003;
        })
        console.log(o);

reduce 歸併

 // reduce return結果會傳遞給下一次遍歷時的value,遍歷完成後返回最終value值


        //****不用理解,會用
        var sum=arr.reduce(function(value,item,index,arr){
console.log(value,item,index,arr);
 return value;
})
    console.log(sum)

// 如果有reduce的初始值,value開始就是這個初始值,並且item會從第0項開始遍歷
        var sum=arr.reduce(function(value,item,index){
            console.log(value,item,index);
            return value+item;
        },100);
        console.log(sum)

Array 的靜態方法

//判斷給入的內容是不是陣列
Array.isArray(arr);//靜態方法
陣列用typeof判斷是object只能用Array.isArray()來判斷
arr.push例項化方法
arr.constructor===Array
判斷這個變數的建構函式是不是Array
iterable迭代器
Array.from(divs) 
ES6
HTMLCollection
arguments
NodeList
Set
Map
將迭代器物件轉換為陣列
ES5使用  將迭代器物件轉換為陣列
var arr=Array.prototype.slice.call(divs);
    //   var arr=Array.prototype.concat.apply([],divs);
    //   console.log(arr)

fill 填充陣列

arr.fill(值,從什麼時候開始填充,到什麼下標之前結束)

var arr=Array(10);
        // arr.fill(1,5);
        填充1,從第二個開始,填充到第六個
        arr.fill(1,2,6)
        console.log(arr)

**Math.random ** 隨機數

console.log(Math.random())//0-1
不包括0也不包括1


生成隨機顏色
var div=document.getElementById("div1");
        div.onclick=function(){
             div.style.backgroundColor=Array(6).fill(1).reduce(function(value,item){
               return value+parseInt(Math.random()*16).toString(16);
            },"#")
        }

reverse 反轉陣列 改變原陣列,並且返回這個原陣列

arr.reverse();
//案例
var arr=[2,4,6,8,0,1,3,5,7];
        arr.reverse();
        console.log(arr)
 //  陣列反轉
        var len=parseInt(arr.length/2);
        for(var i=0;i<len;i++){
            var temp=arr[i];
            arr[i]=arr[arr.length-1-i];
            arr[arr.length-1-i]=temp;
        }
        console.log(arr);

扁平陣列

// 扁平化陣列
        var arr1=arr.flatMap(function(item){
            return item;
        });
        console.log(arr1);
扁平化陣列
     var arr=[[1,2,3],[4,5,6],7,8,9,[[11,12],[13,14],15]];

        function flat(arr,target){
                if(!target){
                    target=[];
                }
                for(var i=0;i<arr.length;i++){
                    if(Array.isArray(arr[i])){
                        flat(arr[i],target)
                    }else{
                        target.push(arr[i]);
                    }
                }
                return target;
        }

          var arr1=flat(arr);
          console.log(arr1);

去重

        var arr=[1,2,2,3,4,4,5,6,5,6,7,8,9];
       var arr1=arr.reduce(function(v,t){
            if(v.indexOf(t)<0) v.push(t);
            return v;
        },[])
        console.log(arr1,arr);
// 陣列去重的幾種方法
       //第一種
var arr=[1,2,3,3,2,4,5,6,7];
for(var i=0;i<arr.length;i++){
    for(var j=i+1;j<arr.length;){
        if(arr[i]===arr[j]){
            arr.splice(j,1);
            continue;
        }
        j++;
    }
}
console.log(arr);


//第二種
var arr=[1,2,3,3,2,4,5,6,7];
var arr1=[];
for(var i=0;i<arr.length;i++){
    var bool=false;
    for(var j=0;j<arr1.length;j++){
        if(arr[j]===arr[i]){
            bool=true;
            break;

        }
    }
    if(!bool){
        arr1.push(arr[i]);
    }
}
console.log(arr1);



//第三種
var arr=[8,1,2,3,3,2,4,5,6,7,8];
var arr1=arr.reduce(function(v,t){
        if(v.indexOf(t)<0) v.push(t);
        return v;
},[])
console.log(arr1);
                           
                           
                           
//第四種
var arr=[8,1,2,3,3,2,4,5,6,7,8];
var arr1=[];
for(var i=0;i<arr.length;i++){
    if(arr1.indexOf(arr[i])<0){
        arr1.push(arr[i]);
    }
}
console.log(arr1);
                                
 
                                
//第五種
  var arr=[1,2,3,3,2,4,5,6,7];
  var arr1=[];
  for(var i=0;i<arr.length;i++){
      if(!arr1.includesa(arr[i])){
          arr1.push(arr[i]);
      }
  }
  console.log(arr1);

排序

sort 陣列的排序

arr.sort()

    arr.sort(function(a,b){
             return a-b;//從小到大排序
             return b-a;//從大到小排序
        })
        console.log(arr);
          var arr=[
            {id:1001,name:"計算機1",price:1200,num:1},
            {id:1002,name:"計算機2",price:3200,num:1},
            {id:1003,name:"計算機3",price:6800,num:1},
            {id:1004,name:"計算機4",price:7200,num:1},
            {id:1005,name:"計算機5",price:13000,num:1},
        ]


        arr.sort(function(a,b){
            return b.price-a.price;
        })
        console.log(arr)

氣泡排序

var arr = [1, 4, 5, 3, 2, 11, 15, 6, 7, 9, 1, 12, 3, 1, 22, 8, 9];
        // 演算法
        // 氣泡排序
        for (var j = 0; j < arr.length-1; j++) {
            for (var i = 0; i < arr.length-j-1; i++) {
                if (arr[i] > arr[i + 1]) {
                    var temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
        console.log(arr)

選擇排序

// 選擇排序
         var arr = [4,1, 5, 3, 2, 11, 15, 6, 7, 9, 1, 12, 3, 1, 22, 8, 9];
        for(var i=0;i<arr.length;i++){
            var min=i;
            for(var j=i+1;j<arr.length;j++){
                if(arr[min]>arr[j]){
                    min=j;
                }
            }
           if(i!==min){
                var temp=arr[i];
                arr[i]=arr[min];
                arr[min]=temp;
           }
        }
        console.log(arr);