zoukankan      html  css  js  c++  java
  • 常用的数组业务处理

    1、根据数组中的某个属性进行排序

    运用场景:后端传回来的数据没有排序,前端自己根据数组中的对象的某个属性进行排序

    [{order:0,name:'小米'},{order:6,name:'小米2'},{order:3,name:'小米2'}] 根据order进行排序
    this.allData.sort(function(a, b) {
       return parseInt(a.order) - parseInt(b.order)  //相当于sort()中的a-b 升序
    })

    多个嵌也是同理

    this.project.map((item) => {
         item.gradeList.map((innerItem) => {
             if(innerItem.madelList) {
                innerItem.madelList.sort(function(a, b) {
                    return parseInt(a.medalType) - parseInt(b.medalType)  //相当于sort()中的a-b,medalType是排序的属性
      }) } }) })

    2、提取对象数组中的某个属性组成一个新数组,使用map

    let arr = [{a:1,b:2},{a:2,b:3},{a:3,b:4}]
    let arr2 = arr.map(item => item.a)
    console.log(
    arr) // [{a:1,b:2},{a:2,b:3},{a:3,b:4}]
    console.log(arr2) // [1,2,3]
    
    

    3、筛选,在某个数组里面赛选出另一个数组里面的值,组成新数组

    this.guestOfficerData = this.guestOfficeOptions.filter((item) => {
            return this.guestOfficerList.some(item2 => item2 === item.officerCode)
          })

    4、数组内元素属性求和

    //数组内元素属性求和
    var arr = [{num:0},{num:1},{num:2},{num:3},{num:4}];
    var sum = arr.reduce((prev,cur) => prev+cur.num , 0 ); // sum 为 10
    // prev初始值设置为0,否则将默认为{num:0},无法累加5、

    5、统计字符串中每个字符出现次数

    //统计字符串中每个字符出现次数
    var str = 'aaabbccddddd'
    var strArr = str.split('')
    var strArrRes = strArr.reduce(function(res, cur) {
        res[cur] ? res[cur] ++ : res[cur] = 1
        return res;
    },{}) // 将res为初始化为一个空对象,否则res默认为‘a’字符串,即strArr的第一个元素
    console.log(strArrRes); // {a: 3, b: 2, c: 2, d: 5}

    6、计算所有商品在不同汇率下的总价格

    //计算所有商品在不同汇率下的总价格
    //汇率数据对象
    var exchangs = {euro: 0.888, dollar: 0.666, rmb: 1}
    //商品列表
    var itemArr = [{price: 10}, {price: 100}, {price: 1000}]
    //累加器函数
    var reducer = function(exc){
        //接受 汇率数据参数 返回 一个新函数 作为调用是的参数方法 
        return function(res,cur){
            //遍历所有汇率 将每一种汇率的价格累加 
            var totalRes = Object.keys(exc).reduce(function(useless,excKey){
                res[excKey]?res[excKey]+=cur.price*exc[excKey]:res[excKey]=cur.price*exc[excKey]; 
                return res;
            },{});
            //返回计算结果
            return totalRes;
        }
    }
    //使用商品列表 调用reduce 计算结果初始值设置为{euro:0, dollar: 0, rmb: 0}
    var totalResult = itemArr.reduce(reducer(exchangs),{euro:0, dollar: 0, rmb: 0});
    console.log(totalResult);
  • 相关阅读:
    Java引用类型转换
    SWFUpload多文件上传使用指南
    SpringMVC中与Spring相关的@注解
    三层——c#版
    初识三层
    vb.net 总结
    设计模式总结
    设计模式系列——装饰模式
    设计模式系列——策略模式
    设计模式系列——简单工厂模式
  • 原文地址:https://www.cnblogs.com/qdlhj/p/11301979.html
Copyright © 2011-2022 走看看