【发布时间】:2020-02-26 20:45:35
【问题描述】:
这是我写的:(标题中的关键是这里的道具)
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)
这是预期的结果:
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'}]
有一些解决方案可以组合数组而不是对象 vals 和 props。
我已经按顺序尝试了一些更改,但它们都导致相同的输出:
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'}]
由于日志按预期输出:
console.log(prop_name)
console.log(value)
但这些不是:
console.log(data.test_obj)
console.log(data.test_obj_arr)
我认为问题出在作业中:
data.test_obj[prop_name] = value
它可以正常工作,只是不在递归内部。尝试使用 Object.Assign 也没有用。
据我所知,所有这些功能都是同步功能。
我错过了什么?
【问题讨论】:
-
这不是有效的 JavaScript。
-
@ScottHunter 抱歉,已编辑。
标签: javascript arrays object recursion combinations