数组按照某一个属性进行分类

<script>
// 这个数组按照  F_ItemClassNo  来进行分组
    let list=[
    {
        "F_ItemGroupNo":"IG168",
        "F_ItemGroupName":null,
        "F_ItemClassNo":"IC0072",
        "F_ItemClassName":"物理类",
        "F_ItemNo":"TI221000250",
        "F_ItemName":"DSC",
        "F_MethodNo":"MS005866",
        "F_MethodName":"GB/T 19466.1-2004",
    },
    {
        "F_ItemGroupNo":"IG167",
        "F_ItemGroupName":null,
        "F_ItemClassNo":"IC0072",
        "F_ItemClassName":"物理类",
        "F_ItemNo":"TI221000242",
        "F_ItemName":"长延时",
        "F_MethodNo":"MS005858",
        "F_MethodName":"/",
    },
    {
        "F_ItemGroupNo":"IG170",
        "F_ItemGroupName":null,
        "F_ItemClassNo":"IC0074",
        "F_ItemClassName":"化学类",
        "F_ItemNo":"TI221000277",
        "F_ItemName":"熔点",
        "F_MethodNo":"MS005908",
        "F_MethodName":"/",
    },
    {
        "F_ItemGroupNo":"IG170",
        "F_ItemGroupName":null,
        "F_ItemClassNo":"IC0074",
        "F_ItemClassName":"化学类",
        "F_ItemNo":"TI221000280",
        "F_ItemName":"电导率",
        "F_MethodNo":"MS005911",
        "F_MethodName":"GB/T 11007-2008",
    },
    {
        "F_ItemGroupNo":"IG170",
        "F_ItemGroupName":null,
        "F_ItemClassNo":"IC0074",
        "F_ItemClassName":"化学类",
        "F_ItemNo":"TI221000283",
        "F_ItemName":"含水率(水分)",
        "F_MethodNo":"MS005914",
        "F_MethodName":"GB/T 29249-2012",
    }
]
// 这个数组按照  year  来进行分组
let arr=[
  {
    'name':'a1',
    'id':1,
    'year':2012
  },
  {
    'name':'a2',
    'id':2,
    'year':2012
  },
  {
    'name':'a3',
    'id':3,
    'year':2013
  },
  {
    'name':'a4',
    'id':4,
    'year':2014
  },
  {
    'name':'a5',
    'id':5,
    'year':2015
  },
  {
    'name':'a6',
    'id':6,
    'year':2015
  },
  {
    'name':'a7',
    'id':7,
    'year':2015
  },
  {
    'name':'a8',
    'id':8,
    'year':2018
  },
  {
    'name':'a9',
    'id':9,
    'year':2018
  },
  {
    'name':'a10',
    'id':10,
    'year':2015
  },
]
// 第一种方法
let obj ={}
list.forEach((item)=>{
    if(!obj[item.F_ItemClassNo]){
        obj[item.F_ItemClassNo]=[]    
    }
    obj[item.F_ItemClassNo].push(item)
})
console.log('第一种方法的第一个数组==按照==F_ItemClassNo',obj)
let new_Two={}
arr.forEach((item)=>{
  if(!new_Two[item.year]){
    new_Two[item.year]=[]    
  }
  new_Two[item.year].push(item)
})
console.log('第一种方法的第一个数组==按照==year',new_Two)

// 第二种方法
function dealWithData(data){
  let c = [];
   let d = {};
   data.forEach(element => {
      if(!d[element.F_ItemClassNo]){
          c.push({
            F_ItemClassNo: element.F_ItemClassNo,
              allData: [element]
          });
          d[element.F_ItemClassNo] = element;
      }else{
          c.forEach(ele => {
              if(ele.F_ItemClassNo == element.F_ItemClassNo){
                  ele.allData.push(element);
              }
          });
       }         
 });
  return c;
}

function dealWithData_Two(data){
  let c = [];
   let d = {};
   data.forEach(element => {
      if(!d[element.year]){
          c.push({
            year: element.year,
              allData: [element]
          });
          d[element.year] = element;
      }else{
          c.forEach(ele => {
              if(ele.year == element.year){
                  ele.allData.push(element);
              }
          });
       }            
 });
  return c;
}
console.log('第二种方法的第一个数组==按照==F_ItemClassNo',dealWithData(list))
console.log('第二种方法的第一个数组==按照==year',dealWithData_Two(arr))
  </script>

在这里插入图片描述

某公司的雇员分为3类,每类员工都有相应的封装类,类的信息如下所示。(1) Employee:这是所有员工总的父类。① 属性:员工的姓名,员工的生日月份② 方法:getSalary(int month) ,参数为月份,如果该月是员工的生日,则公司会额外奖励100 元,否则默认返回0。(2) SalariedEmployee:Employee 的子类,拿固定工资的员工。① 属性:月薪。(3) SalesEmployee:Employee 的子类,销售,工资由月销售额和提成率决定。① 属性:月销售额、提成率。(4) BasePlusSalesEmployee:SalesEmployee 的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。① 属性:底薪。(5)另创建一个Company类,该类有一个属性为Employee数组,用于存储公司的员工对象。有一个displaySalay(int month),输出:xxx(姓名)x月的工资是:xxx.xx元(保留两位小数)本题要求根据上述雇员分类,编写一个程序,满足一下要求:(1)不允许有public和默认属性,根据需求,使用protected和private修饰属性;(2)每个类必须有一个全参数的构造函数;(3)合理使用this和super关键字访问属性、方法和构造函数;(4)在main方法里创建若干个Employee的子类的对象,并将这些存入一个Employee 数组;(5)以步骤(4)中的Employee数组为参数,创建一个Company的对象,调用该对象的displaySalay(int month)方法输出所有员工某月的工资。
最新发布
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾不错吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值