【发布时间】:2018-04-22 22:34:59
【问题描述】:
我有以下输入数据:
{
'a': [1, 2, 3],
'b': ['x', 'y', 'z'],
'c': ['a', 'b', 'c'],
}
我正在尝试将上述输入数据更改为以下数据结构:
{
'0': { a: 1, b: 'x', c: 'a' },
'1': { a: 2, b: 'y', c: 'b' },
'2': { a: 3, b: 'z', c: 'c' }
}
我的 Javascript 代码是:
let parentDataset = {
'a': [1, 2, 3],
'b': ['x', 'y', 'z'],
'c': ['a', 'b', 'c'],
}
let children = {};
let parent = {};
for (let key in parentDataset) {
let i = 0;
for (let value of parentDataset[key]) {
children[key] = value;
parent[i] = children;
i++;
}
}
console.log('parent', parent);
但我得到以下输出,其中最后一个值覆盖了前两个值,如下所示:
{
'0': { a: 3, b: 'z', c: 'c' },
'1': { a: 3, b: 'z', c: 'c' },
'2': { a: 3, b: 'z', c: 'c' }
}
任何解决方案和解释将不胜感激!
【问题讨论】:
-
在循环内声明子节点
-
不,它给出以下输出: parent { '0': { c: 'a' }, '1': { c: 'b' }, '2': { c: ' c' } }
-
所有三个 0 1 和 2 都存储相同的
children对象。你需要一个新的。你必须重新组织一下循环。
标签: javascript object ecmascript-6