js常用的数组处理方法

------------------------------------日常记录,有问题的地方请各位大佬纠正!----------------------------------

Array.sort((a,b)=>{ return a.old-b.old })  将数组按照某个方式排序

Array.every(a=>{ return a.flag== true })  //false  测试数组中的元素是否都能经过某个函数的测试。

Array.find(a=>{ return a.old>10 })   //{name:"袁",flag:false,old:12}   返回符合测试函数的第一个元素,否则返回undefined

Array.filter(a=>{ return a.old > 10 )  //返回一个包含所有符合测试函数的元素的数组,不会筛选空数组

Array.findIndex(a=>{ return a.old>10 })  //返回符合测试函数的第一个元素的下标,如果没有符合的则返回-1

Array.some(a=>{ return a.old>12 })  //true  返回是不是至少有一个元素通过了测试函数true/false

Array.slice(start,end) 截取数组/字符串的一部分,返回一个新的数组/字符串;start为开始位置,end为需要截取的最后一个的位置加1。

Array.splice(start,deleteCount,item)   从array中移除一个或多个数组,并用新的item替换它们。参数start是从数组array中移除元素的开始位置。参数deleteCount是要移除的元素的个数。如果有额外的参数,那么item会插入到被移除元素的位置上。它返回一个包含被移除元素的数组。删除或添加。

const  array = [
  {name:"丽丽",old:12},
  {name:"河马",old:9},
  {name:"大象",old:15}
];

//排序
array.sort((a,b)=>{ return a.old-b.old }) 
// [{name:"河马",old:9},{name:"丽丽",old:12},{name:"大象",old:15}]

//数组的每个元素是否都能通过测试函数
array.every(a=>{ return a.old > 10 })  // false

//返回数组中符测试函数的第一个元素,没有符合的则返回undefined
array.find(a=>{ return a.old > 10 })  // {name:"丽丽",old:12}

//返回数组中符合测试函数的第一个元素的下标,没有符合的元素则返回-1
array.findIndex(a=>{ return a > 10 }) // 1

//返回数组中符合测试函数的所有元素
array.filter(a=>{ return a > 10 }) //[{name:"丽丽",old:12},{name:"大象",old:15}] 

//判断数组中是否至少有一个元素通过测试函数
array.some(a=>{ return a > 16 })  // false

//根据起始位置下标截取数组,返回一个新数组
array.slice(1,2)  // [{name:"河马",old:9},{name:"大象",old:15}] 

--------------------------------------------------------2022/6/1-更新-----------------------------------------------------

reduce方法:循环遍历,如数组求和、求积、数组中元素出现的次数、数组去重。
Array.reduce(function(prev,cur,index,arr){},init)
// prev 必须:上一次调用的返回值,或初始值init
// cur 必须: 当前正在处理的元素
// index 可选:当前正在处理元素的索引;若提供了init,则初始索引为0,否则为1。
// arr 可选:原始数组
// init 可选:初始值

1.求和,求积:
const arr = [2,4,6,8,1]
const sum = arr.reduce((a,b)=>{return a + b;}) 
const sum = arr.reduce((a,b)=>{return a * b;}) 
2.计算数组中元素出现的次数
const arr = [
{name:'张三',orderMoney:56},
{name:'里斯',orderMoney:26},
{name:'张三',orderMoney:22},
{name:'小红',aorderMoneyge:20},
{name:'小红',aorderMoneyge:100},
]
const resultObj = arr.reduce((prev,cur)=>{
    if(!prev[cur.name]){
        prev[cur.name] = 1    
    }else{
        prev[cur.name] ++
    }
    return prev
},{})
console.log('计算出现的次数',resultObj)  //{张三: 2, 里斯: 1, 小红: 2}
3.数组去重
const arr =['yuan','yuan','zhi','hui','qin','kun','da','jiang','fu',
'guan','chang','guan','wang','wang','da']
const result  = arr.reduce((prev,cur)=>{
    if(pre.indexOf(cur) === -1){  //pre.findIndex(a=>{ a.name == cur.name }) === -1
        pre.push(cur)    
    }
    return pre
},[])
console.log('数组去重',result)

4.按属性对Objec分类
const arr = [
{name:'武汉三医院',orderMoney:56,type:'一甲'},
{name:'同济医院',orderMoney:26,type:'一甲'},
{name:'同济医院附属医院',orderMoney:22,type:'二甲'},
{name:'武汉第六内科医院',aorderMoneyge:20,type:'三甲'},
{name:'亚心医院',aorderMoneyge:100,type:'二甲'},
]
function groupByPropertyName(array,propertyName){
    let result = array.reduce((prev,cur)=>{
        let key = cur[propertyName];
        if(!prev[key]){
            prev[key] = [];        
        }
        prev[key].push(cur);
        return prev
    },{})
    return result;
}
var resultArr = groupByPropertyName(arr,'type');
console.log('对象属性分类',resultArr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值