陣列方法、去重、冒泡、選擇、反轉、扁平化陣列
阿新 • • 發佈:2021-12-16
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);