I am working on a react native App Say I have these array list:
let soldList1 = [
{"itemCode":"X001" , "soldRate":0.0789},
{"itemCode":"5555" , "soldRate":0.0543},
{"itemCode":"3141" , "soldRate":0.0112},
{"itemCode":"Mix-001" , "soldRate":0.01},
{"itemCode":"7689-L" , "soldRate":0.005},
{"itemCode":"1111" , "soldRate":0.003}
]
let soldList2 = [
{"itemCode":"3141" , "soldRate":0.0712},
{"itemCode":"7689-L" , "soldRate":0.03},
{"itemCode":"5555" , "soldRate":0.0234},
{"itemCode":"1111" , "soldRate":0.011},
{"itemCode":"X001" , "soldRate":0.008},
{"itemCode":"Mix-001" , "soldRate":0.004}
]
let soldList3 = [
{"itemCode":"5555" , "soldRate":0.0339},
{"itemCode":"X001" , "soldRate":0.0221},
{"itemCode":"3141" , "soldRate":0.0111},
{"itemCode":"1111" , "soldRate":0.0089},
{"itemCode":"Mix-001" , "soldRate":0.0077},
{"itemCode":"7689-L" , "soldRate":0.0032}
]
let soldList4 =[
{"itemCode":"8888" , "soldRate":0.13},
{"itemCode":"9999" , "soldRate":0.11},
{"itemCode":"3141" , "soldRate":0.08},
{"itemCode":"1111" , "soldRate":0.07}
]
let soldList5 =[
{"itemCode":"3141" , "soldRate":0.044},
{"itemCode":"1111" , "soldRate":0.011},
{"itemCode":"8888" , "soldRate":0.0011},
{"itemCode":"9999" , "soldRate":0.0001}
]
let soldList6 =[
{"itemCode":"Mix-001" , "soldRate":0.5678},
{"itemCode":"7689-L" , "soldRate":0.546}
{"itemCode":"8888" , "soldRate":0.323},
{"itemCode":"9999" , "soldRate":0.0032},
{"itemCode":"Mix-001" , "soldRate":0.0022},
{"itemCode":"UV-007" , "soldRate":0.0012}
{"itemCode":"TT-08" , "soldRate":0.0011},
{"itemCode":"PP-03" , "soldRate":0.0009}
]
As you can see, some list got elements other list does not has, and each list item order is desc order by 'soldRate', and each list.length may be different as well.
So the goal is to concate these array list and processing to build a new array list, something like below:
let finalAllConcateAndSortedByDataSumList = [
{"itemCode":"Mix-001" , "data": [0.01, 0.004, 0.0077, 0, 0, 0.5678], "dataSum":0.5895},
{"itemCode":"7689-L" , "data": [0.005, 0.03, 0.0032, 0, 0, 0.546], "dataSum":0.5842},
{"itemCode":"8888" , "data": [0, 0, 0, 0.13, 0.0011, 0.323], "dataSum":0.4541},
{"itemCode":"3141" , "data": [0.0112, 0.0712, 0.0111, 0.08, 0.044, 0], "dataSum":0.2175},
{"itemCode":"X001" , "data": [0.0789, 0.008, 0.0221, 0, 0, 0.0221], "dataSum":0.1311},
{"itemCode":"9999" , "data": [0, 0, 0, 0.11, 0.0001, 0.0032], "dataSum":0.1133},
{"itemCode":"5555" , "data": [0.0543, 0.0234, 0.0339, 0, 0, 0], "dataSum":0.1116},
{"itemCode":"1111" , "data": [0.003, 0.011, 0.0089, 0.07, 0.011, 0], "dataSum":0.1039},
{"itemCode":"UV-007" , "data": [0, 0, 0, 0, 0, 0.0012], "dataSum":0.0012},
{"itemCode":"TT-08" , "data": [0, 0, 0, 0, 0, 0.0011], "dataSum":0.0011},
{"itemCode":"PP-03" , "data": [0, 0, 0, 0, 0, 0.0009], "dataSum":0.0009},
]
So as you can see, all the 'soldRate' elements from list 1 2 3 4 5 6 above has been concate and generated into new array list 'data' property, the position of each data order is strickly the same as above original list 1 2 3 4 5 6.... if the element value in position is not existing in any of the original list, it is then a '0' value
And eventually the each object in finalAllConcateAndSortedByDataSumList, the data array will be sum up into property 'dataSum'
Then the new list finalAllConcateAndSortedByDataSumList is desc order by dataSum
This is my personal attempt to make it work, but it does not work...
let finalAllConcateAndSortedByDataSumList = soldList1.concat(soldList2)
.concat(soldList3)
.concat(soldList4)
.concat(soldList5)
.concat(soldList16).map((item) => {
let newItem = { itemCode: item.itemCode, data: [item.soldRate], dataSum: Math.sum([item.soldRate])}
return newItem
}).sort((item) => { return item.dataSum})
So seeking for help here, code example would be really helpful Thanks