Here is what I wrote: (key in the headline is prop here)
var data = {
dup_by: ['prop1', 'prop2', 'prop3'],
prop1: ['val11', 'val12'],
prop2: ['val21', 'val22'],
prop3: ['val31', 'val32', 'val33'],
test_obj: {},
test_obj_arr: []
};
var dupRecursion = function(prop_index) {
let prop_name = data.dup_by[prop_index]
data[prop_name].forEach((value) => {
data.test_obj[prop_name] = value
console.log(prop_name)
console.log(value)
console.log(data.test_obj)
if (prop_index == 0) {
data.test_obj_arr = [data.test_obj, ...data.test_obj_arr]
console.log(data.test_obj_arr)
} else {
dupRecursion(prop_index - 1)
}
})
return;
};
dupRecursion(data.dup_by.length - 1)
Here is the expected result:
data.test_obj_arr = [{prop1: 'val11', prop2: 'val21', prop3: 'val31'},
{prop1: 'val11', prop2: 'val21', prop3: 'val32'},
{prop1: 'val11', prop2: 'val21', prop3: 'val33'},
{prop1: 'val11', prop2: 'val22', prop3: 'val31'},
{prop1: 'val11', prop2: 'val22', prop3: 'val32'},
{prop1: 'val11', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val21', prop3: 'val31'},
{prop1: 'val12', prop2: 'val21', prop3: 'val32'},
{prop1: 'val12', prop2: 'val21', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val31'},
{prop1: 'val12', prop2: 'val22', prop3: 'val32'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'}]
There are some solutions for combinations of arrays instead of objects vals and props.
I've tried some changes in order but they all result in the same output:
data.test_obj_arr = [{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'},
{prop1: 'val12', prop2: 'val22', prop3: 'val33'}]
Since the logs are coming out as expected:
console.log(prop_name)
console.log(value)
But these aren't:
console.log(data.test_obj)
console.log(data.test_obj_arr)
I believe that the problem is in the assignment:
data.test_obj[prop_name] = value
Singularly it works, just not inside the recursion. Tried to use Object.Assign and it didn't work either.
All those functions, as much as I'm informed, are synced functions.
What am I missing?