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)