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 (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:将被收购公司剩余人员工资乘以1.2,并且改变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:定义一个新对象数组,连接上述两个数组
var Aftereat = WechatUsers.concat(BaiduUsers) //Step4:计算收购之后的最高工资,最低工资,平均工资,male的平均工资,female的平均工资等
//全公司的平均工资
var avgall = Aftereat.map(function(value) {
return value.salary;
}).reduce(function(previous, current, index, array) {
return previous + current;
}) / Aftereat.length;
//男员工的平均工资
Aftereat.filter(function(value) {
return value.gender == 'male'
}).map(function(value) {
return value.salary;
}).reduce(function(previous, current, index, array) {
return previous + current;
}) / Aftereat.filter(function(value) {
return value.gender == 'male'
}).length;
//女员工的平均工资
Aftereat.filter(function(value) {
return value.gender == 'female'
}).map(function(value) {
return value.salary;
}).reduce(function(previous, current, index, array) {
return previous + current;
}) / Aftereat.filter(function(value) {
return value.gender == 'female'
}).length;
//收购之后最高工资
Math.max.apply(null, Aftereat.map(function(value) {
return value.salary;
}))
//收购之后最低工资
Math.min.apply(null, Aftereat.map(function(value) {
return value.salary;
})) //原始方法如下
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("性别无法识别亲");
}
} var avgmale
var 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)); //-------全员工平均工资
console.log(avg(malesalary)); //-------男员工平均工资
console.log(avg(femalesalary)); //-------女员工平均工资 //Step5:找出收购后工资高于8000的员工姓名和电话号码,按薪水从高到低排序
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:找出收购前后工资涨幅最高的员工姓名和电话号码,以及涨幅的百分比
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:找出收购后重名最多的三个姓名,统一出他们的平均年龄
var tempObj = {};
var LLL = Aftereat
for (var i = LLL.length - 1; i >= 0; i--) {
if (tempObj[LLL[i].name]) { // 得到元素出现的次数,并组成obj
tempObj[LLL[i].name] = tempObj[LLL[i].name] + 1;
} else {
tempObj[LLL[i].name] = 1;
}
} var mostVal;
for (var key in tempObj) { // 从对象中得到数组中出现最多的元素
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)  

  作业要求

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, 'arthur','5555','female', 22, 10000));
WechatUsers.push(User.create(1, 'tommy', '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));

Wechat收购Baidu,电话号码相同的人当作是同一个人,合并后salary相加,其他属性保留Wechat的数据,新的Baidu的员工重新生成id,salary涨幅20%
统计收购后的员工平均工资,最高工资,最低工资,male的平均工资,female的平均工资
找出收购后工资高于8000的员工姓名和电话号码,按薪水从高到低排序
找出收购前后工资涨幅最高的员工姓名和电话号码,以及涨幅的百分比
找出收购后重名最多的三个姓名,统一出他们的平均年龄

JavaScript中对象数组 作业的更多相关文章

  1. JavaScript中对象数组 作业题目以及作业

    var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, gender, age, salary) { t ...

  2. JavaScript中对象数组 作业 题目如下

    var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, gender, age, salary) { t ...

  3. JavaScript中对象数组 根据某个属性值 然后push到新的数组

    原文链接 https://segmentfault.com/q/1010000010075035 将下列对象数组中,工资大于1w的员工,增加到对象数组 WanSalary中 var BaiduUser ...

  4. JavaScript中对象数组去重方法

    在一次对后端返回的对象数组的操作时想通过indexOf()或者includes()的方法来实现对对象数组的去重但是行不通,因为用indexOf()返回的都是-1,一下记录两种对象数组(更具指定属性)去 ...

  5. JavaScript中对象数组,如何给对象添加一个新属性

    var a =[{name: 'Tom',age:20},{name: 'Tom2',age:22}] 现在给a数组中的第一个对象添加性别属性 a[0]['gender']='women' a[0][ ...

  6. JavaScript中对象数组 根据某个属性值进行排序

    将下列对象数组,通过工资属性,由高到低排序 var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, ge ...

  7. javascript中对象和数组的异同点

    一.JS声明对象或数组 JS对象:{ } JS数组:[ ] 对象 var b={m:'123',n:'abc'};alert(b.m);alert(b.n); 一维数组 var a=[1,2,3];a ...

  8. JavaScript中Array(数组) 对象

    JavaScript中Array 对象 JavaScript中创建数组有两种方式 (一)使用直接量表示法: var arr4 = []; //创建一个空数组var arr5 = [20]; // 创建 ...

  9. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

随机推荐

  1. Windows远程连接的实现

          实验室有一台电脑,寝室里也有一台电脑,很多时候,事情还没有做完就不得不离开实验室,所以,在寝室里远程控制实验室的电脑是一件很有"意义"的事,其实,Windows系统已经 ...

  2. Sublime Text 3 使用MarkDown编写带预览的文本

    看到别人使用一个叫Markdown的标记语言来完成编码,心里就有点小激动,毕竟简短的几个符号,就可以写出如此精美的界面,实在是让人感到心旷神怡啊.于是我就在网上搜索了一些相关项的设置,于是便有了下面的 ...

  3. iOS开发之五:常用控件--UITextField的使用

    UITextField 是iOS开发中用的非常多的一种控件,主要是供用户输入单行信息的.下面来详细介绍UITextField. 1.常用属性 <span style="font-siz ...

  4. 【嵌入式开发】嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11)

    作者 : 万境绝尘 博客地址 : http://blog.csdn.net/shulianghan/article/details/42254237 一. 相关工具下载 嵌入式开发工具包 : -- 下 ...

  5. UNIX环境高级编程——主线程与子线程的退出关系

    我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下. 1.  主线程等待新线程先结束退出,主线程后退出.正常执行. 示例代码: #include & ...

  6. C#调用GDAL算法进度信息传递

    GDAL库中提供了很多的算法,同时也提供了进度条的参数.对于C++调用来说,应该没什么问题,但是对C#调用来说,在进度条这块需要写一个代理来进行传递.首先写一个简单的测试代码. 首先定义一个委托函数原 ...

  7. Gradle 1.12 翻译——第十五章. 任务详述

    有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...

  8. 方便使用FFMPEG的经验

    FFMPEG是命令行工具,因此使用起来多少还是会有些不方便.在这记录两点方便使用FFMPEG的方法: 1.任何目录下都可以使用FFMPEG 问题描述:需要转码(播放)的时候,需要把ffmpeg.exe ...

  9. STL:STL各种容器的使用时机详解

    C++标准程序库提供了各具特长的不同容器.现在的问题是:该如何选择最佳的容器类别?下表给出了概述. 但是其中有些描述可能不一定实际.例如:如果你需呀处理的元素数量很少,可以虎落复杂度,因为线性算法通常 ...

  10. Leetcode_28_Implement strStr

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41452047 Implement strStr(). Re ...