Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何找到每个部门的最高工资,,_Javascript_Node.js - Fatal编程技术网

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

Javascript 如何找到每个部门的最高工资,,,javascript,node.js,Javascript,Node.js,如何找到每个部门的最高工资 let emp =[ { 'name':"A", 'sal':86879, 'dept':1 }, { 'name':"B", 'sal':3453674, 'dept':2 }, { 'name':"C", 'sal':568867,

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

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
    }
];

您可以通过获取
dept
val
并收集对象中的最大值来减少数组

const
数据=[{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:6767678,dept:3},{name:“G”,sal:45654,dept:4},{name:“H”,sal:35677,dept:4},
结果=data.reduce(
(r,{dept,sal})=>(r[dept]=Math.max(r[dept]??-Number.max_值,sal),r),
{}
);

控制台日志(结果)您可以查看数组中的每个条目,并通过将它们存储在这样一个单独的对象中来检查每个部门中的最高值

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

maxSal是一个带有部门键的对象,该值是最高工资

在这里执行
findHighestSalary
函数将返回最高工资,只需传递部门号作为参数

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));

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