1、定义两个对象,属性相同的值相加,并将值赋值为数组中对象属性相同的
- 定义数组
var titleDate = [{name: 'JKJInputQty',field: 'restQty',icon: config.ossUrl + '/afl-data-screen/images/icon-all-input.png',value: 0,titleNames: 'JKJInputQty',span: 3}, {name: 'JKJOutputQty',field: 'restQty',icon: config.ossUrl + '/afl-data-screen/images/icon-takeOut.png',value: 0,titleNames: 'JKJOutputQty',span: 3}, {name:'PEOutputQty',field: 'restQty',icon: config.ossUrl + '/afl-data-screen/images/icon-output.png',value: 0,titleNames: 'PEOutputQty',span: 3}, {name: 'abnormalCause',field: 'restQty',icon: config.ossUrl + '/afl-data-screen/images/icon-search.png',cause: '',titleNames: 'AbnormalCause',span: 5}]
- 定义两个对象
var ProductDataByDayofLine1= {"JKJInputQty": 3276,"JKJOutputQty": 9890,"PEOutputQty": 8442,"DROutputQty": 10584,"JKJOutputDifferenceQty": 6614,"PEOutputDifferenceQty": 0,"DROutputDifferenceQty": 2142,"AbnormalCause": "JKJ产出数量大于投入数量DR产出数量大于PE产出数量"}
var ProductDataByDayofLine2= {"JKJInputQty": 0,"JKJOutputQty": 0,"PEOutputQty": 0,"DROutputQty": 0,"JKJOutputDifferenceQty": 0,"PEOutputDifferenceQty": 0,"DROutputDifferenceQty": 0,"AbnormalCause": ""},
- 将连个对象合并相加
const keys = Object.keys(ProductDataByDayofLine1)
keys.forEach((name, index) => {titleDate.forEach(item => {if (name === item.titleNames && index < 4) {item.value = Number(ProductDataByDayofLine1[name]) + Number(ProductDataByDayofLine2[name])}if (name === item.titleNames && item.titleNames === 'JKJOutputDifferenceQty') {// Number() 将值转换类型为数字类型const a = Number(ProductDataByDayofLine1[name]) + Number(ProductDataByDayofLine2[name])const b = Number(ProductDataByDayofLine1.PEOutputDifferenceQty) + Number(ProductDataByDayofLine2.PEOutputDifferenceQty)const c = Number(ProductDataByDayofLine1.DROutputDifferenceQty) + Number(ProductDataByDayofLine2.DROutputDifferenceQty)item.value = a + b + c}//特定的判断条件去添加到titleDate数组属性中if (name === item.titleNames && item.titleNames === 'AbnormalCause') {item.cause = res.ProductDataByDayofLine1[name] + ProductDataByDayofLine2[name]}})
})
2、将对象转换为数组并合并对象
数据格式为
var ProductDataByHourofLine1= {"HourOne": {"JKJInputQty": 0,"JKJOutputQty": 0,"PEOutputQty": 0,"DROutputQty": 0,"JKJOutputDifferenceQty": 0,"PEOutputDifferenceQty": 0,"DROutputDifferenceQty": 0,"AbnormalCause": null},"HourTwo": {"JKJInputQty": 0,"JKJOutputQty": 0,"PEOutputQty": 0,"DROutputQty": 0,"JKJOutputDifferenceQty": 0,"PEOutputDifferenceQty": 0,"DROutputDifferenceQty": 0,"AbnormalCause": null},"HourThree": {"JKJInputQty": 0,"JKJOutputQty": 0,"PEOutputQty": 0,"DROutputQty": 0,"JKJOutputDifferenceQty": 0,"PEOutputDifferenceQty": 0,"DROutputDifferenceQty": 0,"AbnormalCause": null},"HourFour": {"JKJInputQty": 0,"JKJOutputQty": 0,"PEOutputQty": 0,"DROutputQty": 0,"JKJOutputDifferenceQty": 0,"PEOutputDifferenceQty": 0,"DROutputDifferenceQty": 0,"AbnormalCause": null},}var ProductDataByHourofLine2= {"HourOne": {"JKJInputQty": 0,"JKJOutputQty": 0,"PEOutputQty": 0,"DROutputQty": 0,"JKJOutputDifferenceQty": 0,"PEOutputDifferenceQty": 0,"DROutputDifferenceQty": 0,"AbnormalCause": null},"HourTwo": {"JKJInputQty": 0,"JKJOutputQty": 0,"PEOutputQty": 0,"DROutputQty": 0,"JKJOutputDifferenceQty": 0,"PEOutputDifferenceQty": 0,"DROutputDifferenceQty": 0,"AbnormalCause": null}//......后面定义省略
}
- 转换对象并添加到新的数组中
let arr=[]
let arr2=[]
Object.entries(ProductDataByHourofLine1).forEach((item, index) => {if (item[0] === 'HourOne') {item[1].TimePeriod = '00:00 ~ 01:00'arr.push(item[1])}if (item[0] === 'HourTwo') {item[1].TimePeriod = '01:00 ~ 02:00'arr.push(item[1])}if (item[0] === 'HourThree') {item[1].TimePeriod = '02:00 ~ 03:00'arr.push(item[1])}if (item[0] === 'HourFour') {item[1].TimePeriod = '03:00 ~ 04:00'arr.push(item[1])}
})Object.entries(ProductDataByHourofLine2).forEach((item, index) => {if (item[0] === 'HourOne') {item[1].TimePeriod = '00:00 ~ 01:00'arr2.push(item[1])}if (item[0] === 'HourTwo') {item[1].TimePeriod = '01:00 ~ 02:00'arr2.push(item[1])}if (item[0] === 'HourThree') {item[1].TimePeriod = '02:00 ~ 03:00'arr2.push(item[1])}if (item[0] === 'HourFour') {item[1].TimePeriod = '03:00 ~ 04:00'arr2.push(item[1])}
})
- 将两个数组中对象相同的合并相加 到某一个数组的属性上
arr.forEach((item, index) => {var item2 = arr2[index]var a = Object.keys(item)var b = Object.keys(item2)a.forEach((x, index) => {if (x === b[index] && x !== 'TimePeriod') {item[x] = Number(item[x]) + Number(item2[x])}})})