数组方法、去重、冒泡、选择、反转、扁平化数组
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);