【问题标题】:How to find max salary in each department,, [closed]如何找到每个部门的最高工资,[关闭]
【发布时间】:2021-04-20 16:29:14
【问题描述】:

如何找到每个部门的最高工资?

let emp =[
    {
        'name':"A",
        'sal':86879,
        'dept':1
    },
    {
        'name':"B",
        'sal':3453674,
        'dept':2
    },
    {
        'name':"C",
        'sal':568867,
        'dept':3
    },
    {
        'name':"D",
        'sal':34661,
        'dept':1
    },
    {
        'name':"E",
        'sal':896556,
        'dept':2
    },
    {
        'name':"F",
        'sal':67678,
        'dept':3
    },
    {
        'name':"G",
        'sal':45654,
        'dept':4
    },{
        'name':"H",
        'sal':35677,
        'dept':4
    }
];

【问题讨论】:

  • 什么不起作用?
  • 如何解决?
  • 制作一个对象。循环数组。设置部门的密钥。如果不存在添加工资。如果确实存在,请检查薪水是否更大。如果设置了它。 reduce() 的完美示例

标签: javascript node.js


【解决方案1】:

这里你去findHighestSallary 函数将返回最高薪水刚刚通过部门号。作为论据。

let emp =[
    {
        'name':"A",
        'sal':86879,
        'dept':1
    },
    {
        'name':"B",
        'sal':3453674,
        'dept':2
    },
    {
        'name':"C",
        'sal':568867,
        'dept':3
    },
    {
        'name':"D",
        'sal':34661,
        'dept':1
    },
    {
        'name':"E",
        'sal':896556,
        'dept':2
    },
    {
        'name':"F",
        'sal':67678,
        'dept':3
    },
    {
        'name':"G",
        'sal':45654,
        'dept':4
    },{
        'name':"H",
        'sal':35677,
        'dept':4
    }
];


function findHighestSallary(dept) {
    let myarray = [];
    
    emp.map((x) => {
        if(x.dept === dept){
            myarray.push(x);
        }
    })
    
    myarray.sort(function(a, b) {
        return b.sal - a.sal;
    });
    
    return myarray[0].sal;
}

console.log(findHighestSallary(1));

【讨论】:

    【解决方案2】:

    您可以查看数组中的每个条目,并通过将它们存储在像这样的单独对象中来检查每个部门中的最高值

    const maxSal = {};
    emp.forEach(e=>{
        if (!maxSal[e.dept] || maxSal[e.dept] < e.sal){
            maxSal[e.dept] = e.sal;
        }
    });
    

    maxSal 是一个有部门键的对象,值是最高薪水

    【讨论】:

      【解决方案3】:

      您可以通过采用deptval 来减少数组并收集对象中的最大值。

      const
          data = [{ name: "A", sal: 86879, dept: 1 }, { name: "B", sal: 3453674, dept: 2 }, { name: "C", sal: 568867, dept: 3 }, { name: "D", sal: 34661, dept: 1 }, { name: "E", sal: 896556, dept: 2 }, { name: "F", sal: 67678, dept: 3 }, { name: "G", sal: 45654, dept: 4 }, { name: "H", sal: 35677, dept: 4 }],
          result = data.reduce(
              (r, { dept, sal }) => (r[dept] = Math.max(r[dept] ?? -Number.MAX_VALUE, sal), r ),
              {}
          );
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 2019-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-23
        • 2018-05-17
        • 2021-01-31
        • 1970-01-01
        • 2014-03-15
        相关资源
        最近更新 更多