数组常用方法,很详细

回调函数:

如果你把一个函数 当成了参数来传递使用的话 这个函数我们叫做回调函数;

function fn(){
    console.log(1001);
}
setInterval(fn,1000);//fn为一个回调函数
forEach() :

1.数组每个元素都会执行一次回调函数

2.类似以前的for循环

const arr=["a","b","c"];
//会把数组里面每个元素都打印一次
arr.forEach(v=>console.log(v));
//会把数组里面每个元素、下标都打印
arr.forEach((v,index)=>console.log(v,index));
//会把数组里面每个元素、下标、数组本身都
arr.forEach((v,index,arr)=>console.log(v,index,arr));
//打印结果
/* a 0 (3) ['a', 'b', 'c'] */
/* b 1 (3) ['a', 'b', 'c'] */
/* c 2 (3) ['a', 'b', 'c'] */

const lis=document.querySelectorAll("li");
//把每个li的背景颜色改为红色;
lis.forEach(lis=>lis.style.backgroundColor="red");
map();

1.强调的是映射

2.有返回值;

3.map本身就有返回值,他是一个数组

const arr=[a,b,c,d,e];
const ul=document.querySelector("ul");
//value为数组元素,index为数组的下标;
const liHTML=arr.map((value,index)=>`<li data-index="${index}">${value}</li>`)
ul.appendChild(liHTML);  
filter()数组筛选过滤

返回一个满足条件的·数组

const arr=[{age:18,name:"悟空"},{age:19,name:"五金"},{age:20,name:"银角"}]
        let newarr= arr.filter(value=>value.age>18);
        console.log(newarr);
//0: {age: 19, name: '五金'}
//1: {age: 20, name: '银角'}
//length: 2
every()接收一个回调函数、

1.只要数组中的每一个元素都返回true,则返回true

2.如果你在循环的时候返回了fasle,剩下的就不会在执行了;

3.数组为空也会返回true;

真数组:

真正的数组;有数组的各种方法

伪数组:

本质是一个对象:有forEach

querSelectorAll()获取的是一个有forEach()的伪数组;

getElemtssByClassName()获取的没有forEach;

把伪数组变成真数组:

1.[…数组名]; 2.Array.from(数组名);

every()与some()
/*<ul>
    <li>12</li>
    <li></li>
</ul> */
const lis=document.querySelectorAll("li");
lis.forEach((e)=>{
  e.addEventListener("click",(e)=>{
      let flag=[...lis].some((e)=>e.innerText=="12");//表示只要有一个
      console.log(flag);//true
------------------------------------------------------------------------------      
      let flag=[...lis].every((e)=>e.innerText=="12");//表示每一个
      console.log(flag);//false
  })
})


find()

返回数组中满足条件的一个元素;没找到就undefined;

findIndex()

返回数组中满足条件的一个元素的对应下标;没找到就-1;

const arr=[1,12,34,13,43,1,1,];
let index=arr.find(e=>e>2);
console.log(index);//12   未找到 undefined

const arr=[1,12,34,13,43,1,1,];
let index=arr.findIndex(e=>e>2);
console.log(index);//1    未找到 -1

//比较复杂的数组查找元素我们用find        findIndex ===>则返回arr的下标0
let arr=[
  {name:"悟空",age:5200},
  {name:"八戒",age:999},
  {name:"白龙马",age:456}
]
let e=arr.find(v=>v.age>800);
console.log(e);//悟空 5200
includes() 判断数组是否包含一个指定元素 返回true和false
indexOf() 判断数组是否包含一个指定元素 返回小标和-1;
Array.isArray(); 判断是否为一个真数组
const arr=[1,2,3,4];
let e=Array.isArray(arr);
console.log(e);//true
reduce() 重难点!!!

求和

*********************************写法一***********************************
let arr=[1,2,3];
let num=arr.reduce((sum,value)=>sum+value,0) //sum总和  value为数组的每个元素 0为初始值 
console.log(num); //6  记住,如果省去箭头的{}则要加return
*********************************写法二***********************************
let arr=[1,2,3];
let num=arr.reduce((sum,value)=>{
  return sum+value;
},0)
console.log(num);

拼接标签

let liHTML=arr.reduce((sum,value)=>sum+`<li>${value}</li>`,"");
console.log(liHTML);//<li>1</li><li>2</li><li>3</li>!!

//筛选
//写法一:
let liHTML=arr.reduce((sum,value)=>value%2!==0?sum+`<li>${value}</li>`:sum,"");
//写法二:
let liHTML=arr.reduce((sum,value)=>{                    //sum为最后的标签组合
      if(value%2!==0){                              //判断如果是奇数就添加标签
        return sum+`<li>${value}</li>`
      }else{
         return sum;                             //不是就不添加,返回上次的sum
      }
},"")                              //因为要进行字符串拼接,所以初始值我们要用"";
console.log(liHTML);
//<li>1</li><li>3</li>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值