Object Array Job Upgrade in JavaScript

var BaiduUsers = [], WechatUsers = [];
var User = function(id, name, phone, gender, age, salary) {
this.id = id;
this.name = name;
this.phone = phone;
this.gender = gender;
this.age = age;
this.salary = salary;
};
User.create = function(id, name, phone, gender, age, salary) {
    return new User(id, name, phone, gender, age, salary);
};
BaiduUsers.push(User.create(1, 'tommy', '1111','male', 18, 10000));
BaiduUsers.push(User.create(2, 'jerry', '2222','male', 28, 10000));
BaiduUsers.push(User.create(3, 'raobin','3333','female', 14, 1200));
BaiduUsers.push(User.create(4, 'binbin','4444','male', 23, 9800));
BaiduUsers.push(User.create(5, 'yuyu','5555','female', 22, 10000));
WechatUsers.push(User.create(1, 'yuyu', '1111','male', 20, 40000));
WechatUsers.push(User.create(2, 'allen', '6666','male', 34, 15800));
WechatUsers.push(User.create(3, 'raobin','3333','female',16, 2300));
WechatUsers.push(User.create(4, 'harvey','7777','male',30, 29800));
WechatUsers.push(User.create(5, 'yuyu',  '8888','female',27, 7000));
 
//Step1: For the personnel of the acquired company, if the mobile phone number exists in the original company, merge the salaries and delete them
for (var i = 0; i < BaiduUsers.length; i++) {
for (var y = 0; y< WechatUsers.length; y++) {
if (BaiduUsers[i].phone==WechatUsers[y].phone)
{
WechatUsers[y].oldsalary=WechatUsers[y].salary;
WechatUsers[y].salary=WechatUsers[y].salary+BaiduUsers[i].salary;
BaiduUsers.splice(i,1)
}
}
}
//Step2: Multiply the salary of the remaining employees of the acquired company by 1.2, and change the ID
var len = WechatUsers.length;
for (var i = 0; i < BaiduUsers.length; i++) {
BaiduUsers[i].oldsalary =BaiduUsers[i].salary;
BaiduUsers[i].salary = BaiduUsers[i].salary*1.2;
BaiduUsers[i].id = WechatUsers.length+1+i;
}
//Step3: Define a new object array and connect the above two arrays
var Aftereat=WechatUsers.concat(BaiduUsers)
 
 
//Step4: Calculate the maximum salary, minimum salary, average salary, male's average salary, female's average salary after the acquisition, etc. 
//

var avgall=Aftereat.map(function(value){

return value.salary;
}).reduce(function(previous,current,index,array){
return previous+cirrent;})



var arrsalary = [] for(var i=0;i<Aftereat.length;i++){ arrsalary.push(Aftereat[i].salary) } var malesalary = [] var femalesalary =[] for(var i=0;i<Aftereat.length;i++){ if(Aftereat[i].gender=='male'){ malesalary.push(Aftereat[i].salary) }else if (Aftereat[i].gender=='female'){ femalesalary.push(Aftereat[i].salary) }else{console.log("Gender cannot be identified"); } } was avgmale was avgfemale function avg(dataIntArr) { var avg=0; for(var i=0;i<dataIntArr.length;i++){ avg+=parseFloat(dataIntArr[i]); } return avg/dataIntArr.length; } avg(arrsalary) avg(malesalary) avg(femalesalary) var topsalary=0 var summarysalary = 0 var bottomsalary = 99999999999 for(var i=0;i<arrsalary.length;i++){ summarysalary +=arrsalary[i]; if(arrsalary[i]>topsalary) {topsalary=arrsalary[i]} if(arrsalary[i]<bottomsalary) {bottomsalary=arrsalary[i]} } var avgall=summarysalary/arrsalary.length console.log(bottomsalary); console.log(topsalary); console.log(summarysalary); console.log(avgall); console.log(avg(arrsalary));//-------The average salary of all employees console.log(avg(malesalary));//--------the average salary of male employees console.log(avg(femalesalary));//-------average salary of female employees //Step5: Find out the names and phone numbers of employees whose salary is higher than 8000 after the acquisition, and sort by salary from high to low function sortBy(filed) { return function(a,b){ return b[filed]-a[filed] } } Aftereat.sort(sortBy("salary")) var arrmorethan8000 = new Array(); var UserArray = function(name, phone) { this.name = name; this.phone = phone; }; UserArray.add = function(name, phone) { return new UserArray(name, phone); }; for (var i = 0; i < Aftereat.length; i++) { if (Aftereat[i].salary>8000){ arrmorethan8000.push( UserArray.add(Aftereat[i].name,Aftereat[i].phone) ) } } arrmorethan8000 var MMM=Aftereat //Step6: Find out the name and phone number of the employee with the highest salary increase before and after the acquisition, and the percentage of increase for (var i = 0; i < MMM.length; i++) { if(MMM[i].oldsalary!=undefined) { MMM[i].salaryrise=MMM[i].salary -MMM[i].oldsalary ; MMM[i].percentrise=MMM[i].salaryrise/MMM[i].oldsalary*100; }else{MMM.splice(i,1)} } function sortBy(filed) { return function(a,b){ return b[filed]-a[filed] } } MMM.sort(sortBy("percentrise")) //Step7: Find out the three names with the most duplicate names after the acquisition, and unify their average age var tempObj = {}; var LLL=Aftereat for(var i=LLL.length-1; i>=0; i--){ if(tempObj[LLL[i].name]){ // Get the number of times the element appears and form obj tempObj[LLL[i].name] = tempObj[LLL[i].name]+1; }else{ tempObj[LLL[i].name] = 1; } } var mostVal; for(var key in tempObj){ // get the most common element in the array from the object if(!mostVal){ mostVal = key; }else if(tempObj[mostVal]<tempObj[key]){ mostVal = key; } } delete tempObj.mostVal var name=[] for (var i = 0; i < Aftereat.length; i++) { if(Aftereat[i].name==mostVal) {name.push(Aftereat[i].age)} } avg(name)

  

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325076576&siteId=291194637