/
ValuePropogationUsingMemoization.html
47 lines (38 loc) · 1.5 KB
/
ValuePropogationUsingMemoization.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const tableArr = {
'columns': ['id', 'column1', 'column2', 'column3'],
'order': [1, 3, 2, 4, 7, 5, 11],
'data': [
{ 'id': 1, 'column': 'column1', 'value': 'apple'},
{ 'id': 3, 'column': 'column3', 'value': 'iOs'},
{ 'id': 2, 'column': 'column1', 'value': 'apple inc'},
{ 'id': 2, 'column': 'column2', 'value': 'NextGen'},
{ 'id': 4, 'column': 'column1', 'value': 'MS'},
{ 'id': 4, 'column': 'column2', 'value': 'Office'},
{ 'id': 7, 'column': 'column2', 'value': 'Server'},
{ 'id': 5, 'column': 'column3', 'value': '2016'},
{ 'id': 5, 'column': 'column2', 'value': null},
{ 'id': 11, 'column': 'column3', 'value': 'Android'},
{ 'id': 11, 'column': 'column2', 'value': 'OS'},
{ 'id': 11, 'column': 'column1', 'value': 'Google'},
{ 'id': 4, 'column': 'column3', 'value': ''}
]
};
function valuesToArray(obj) {
let column = tableArr.columns
return column.map((key) => obj[key]);
}
function convertFunction(newTable) {
//newTable contains tableArr.
//dataDetails do the filtering, where the tableArr.data.id equals to the id passed from order array
const dataDetails = (el) => newTable.data.filter((dataId) => dataId.id === el);
const mapDetails = newTable.order.map((id) => {
convertFunction.cache.id = id;
dataDetails(id).forEach((item) => {
convertFunction.cache[item.column] = item.value;
})
return valuesToArray(convertFunction.cache);
})
return mapDetails;
}
convertFunction.cache = {};
console.log(convertFunction(tableArr));