JavaScript数组方法

数组方法整理
1. 清空数组
let arr = [1,2,3]
// 方法一
arr.length = 0
// 方法二
arr = []; //创建了新的空间
2. 数组复制copyWithin()

​ copyWithin(targt,start,end)

​ 参数1targt: 赋值到指定索引值位置

​ 参数2start:要复制起点索引值

​ 参数3end:要复制的截至位置索引值

let arr = [4,6,2,3,1,5,9]
arr.copywithin(1,3,5) // [4,3,1,3,1,5,9]
// 起始的范围[3,5)
3. 数组查找
(1) indexOf()
let arr=[1,2,3,4,5]
// 严格查找===
arr.indexOf('1')// -1
arr.indexOf(1)// 0
(2) includes()
let arr=[1,2,3,4,5]
arr.includes('1')// false
arr.includes(1)// true
(3) find()
/*
* @param {array} arr 要查找的数组
* @param{function} callback 要执行的函数
* @return 返回找到值的整体
*/
find(arr,callback){
    for(const value of arr){
		if(callback(value)){
			return value
        }
    }
    return undefined;
}
find(arr,(value)=>{
    return value===0
})
find(callback){
    for(const value of this){
		if(callback(value)){
			return value
        }
    }
    return undefined;
}

arr.find((value)=>{
    return value===0
})
(4) findIndex()

返回找到值的索引值

4. 迭代器
let arr = [1,2,3,4,5]
let key = arr.keys();
let value = arr.values();
let entries = arr.entries();
key.next()// 0
value.next()// 1
entries.next()// {done: false,value:[0,1]}
5. every()

判断一组数据是否都为真(&&)

// 判断该班级学生成绩是否都及格
let achievement = [80,90,60,50,89,78,67,56]
let res = achievement.every((key)=>{
    return key>=60
})
console.log(res?"及格""未及格")
6. some()

判断一组数据中是是否存在真(||)

<input type='text'  /> 
let matchArr = ['小王','小红']
let inp = document.querySelector('input');
let res = matchArr.some(item=>{
    return inp.innerText. indexOf(item)!==-1;
})

let span = document.createElement('span');
span.innerText = res?'':'不存在matchArr中的数据'
inp.appendChild(span);

7.filter()
/*
* @param {array} arr 要查找的数组
* @param{function} callback 要执行的函数
* @return 返回筛选出的数组
*/
filter(arr,callback){
    let newArray = [];
    for(const value of arr){
		if(callback(value)){
			newArray.push(value);
        }
    }
    return newArray;
}

let arr = [1,2,3,4,5]
let res = filter(arr,item=>{
    return item>3
})

console.log(res)// [4,5]
8. map()
let arr = [
    {
        name:'手机',
        pay: '2000'
    },{
        name:'电脑',
        pay: '10020'
    },{
        name:'防晒',
        pay: '100'
    },{
        name:'粉底液',
        pay: '400'
    },{
        name:'护肤品',
        pay: '1000'
    },
]
// 为商品添加id
let res = arr.map((item,index)=>{
	return{
        ...item,
        id: index
    }
})
9.reduce()
// reduce((pre,value,index,arr),initial)
// pre: 上一次返回的结果
// value: 值
// index:索引
// arr:数组
// initial:pre初始值;若没有初始值:第一次调用,pre的值是index=0的值,value是index=1;后面是pre=undefined。若有初始值pre=initial,value=arr[0]
// 使用场景 统计/加法/最大值/最小值
let arr = [
    {
        name:'手机',
        pay: '2000'
    },{
        name:'电脑',
        pay: '10020'
    },{
        name:'防晒',
        pay: '100'
    },{
        name:'粉底液',
        pay: '400'
    },{
        name:'护肤品',
        pay: '1000'
    },
]
//获取购物车超过10000的物品的数量
let res = arr.reduce((pre,value)=>{
   return pre+=value>10000?1:0 
},0)
//最后购买的东西一共多少钱
let res = arr.reduce((pre,value)=>{
   return pre+=value 
},0)
//购物车最贵/最便宜的东西
let res = arr.reduce((pre,value)=>{
   return pre>value?pre:value
},[])
//购物车去重
let obj = {}
let res = arr.reduce((pre,value)=>{
    if(obj[value.name]){
        return pre
    }else{
      	pre.push(value);
        obj[value.name] = true;
        return pre
    }
    
},[])
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值