我认真搜索过,但找不到正确的答案。我有一个对象数组:
[ { currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '505',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 633.6 },
{ currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '404',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 48,
wages: 2534.4 },
{ currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '303',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 633.6 },
{ currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '203',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 950.4000000000001 },
{ currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '202',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 48,
wages: 2534.4 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '500',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 576 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '400',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 48,
wages: 2304 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '300',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 576 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '201',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 864 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '200',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 48,
wages: 2304 } ]
我想要的是一个新的对象数组,显示 currentMonth、employeeNumber、caLastName、caFirstName、rate_per_hour、clientType、totalHours 总和以及每个员工的工资总和。所以在这个例子中,一个只有两个对象的数组。
我尝试过减少和过滤,但我无法准确理解我哪里出错了。我宁愿不做循环,因为我怀疑这会降低效率。
新数组看起来有点像:
[ { currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 168,
wages: 7286.4 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 168,
wages: 6624 } ]
最佳答案
您可以利用减少和聚合数据,例如
const data = [ { currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '505',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 633.6 },
{ currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '404',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 48,
wages: 2534.4 },
{ currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '303',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 633.6 },
{ currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '203',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 950.4000000000001 },
{ currentMonth: 'September-2018',
employeeNumber: '130',
caLastName: 'Bartoletti',
caFirstName: 'Elias',
payrollCode: '202',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 48,
wages: 2534.4 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '500',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 576 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '400',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 48,
wages: 2304 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '300',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 576 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '201',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 24,
wages: 864 },
{ currentMonth: 'September-2018',
employeeNumber: '196',
caLastName: 'Barrows',
caFirstName: 'Felicia',
payrollCode: '200',
rate_per_hour: 25,
clientType: 'Single',
totalHours: 48,
wages: 2304 } ]
const res = data.reduce((acc, obj) => {
const index = acc.findIndex(item => item.employeeNumber === obj.employeeNumber);
if(index > -1) {
console.log(acc[index])
acc[index] = {...acc[index], totalHours: acc[index].totalHours + obj.totalHours, wages: acc[index].wages + obj.wages};
} else {
acc = acc.concat([obj]);
}
return acc;
}, [])
console.log(res);
关于javascript - 从对象数组中获取具有总和的不同项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52521521/