我收到以下格式的数据:
data = [
{
name: 'example1',
options: {
'label1': {
param2: 'hey'
},
'label2': {
param2: 'hey2'
}
}
},
...
]
然后,我使用以下操作:
let repos = [];
data.map(repo => {
Object.keys(repo.options).map(k => {
repos.push(Object.assign(repo, {
param1: k,
param2: options[k].param2
}));
});
});
我希望上面的代码会产生
repos = [
{
name: 'exmaple1',
param1: 'label1',
param2: 'hey'
},
{
name: 'exmaple1',
param1: 'label2',
param2: 'hey2'
},
...
]
但是,它会产生
repos = [
{
name: 'exmaple1',
param1: 'label1',
param2: 'hey'
},
{
name: 'exmaple1',
param1: 'label1',
param2: 'hey'
},
...
]
我不知道为什么。由于某些原因,键上的最后一个循环在所有先前的迭代中都覆盖了param1和param2。任何想法如何解决?谢谢!
答案 0 :(得分:0)
为什么不简单地做:
repos.push({
name: repo.name,
param1: k,
param2: repo.options[k].param2
});
演示:
data = [{
name: 'example1',
options: {
'label1': {
param2: 'hey'
},
'label2': {
param2: 'hey2'
}
}
}]
let repos = [];
data.map(repo => {
Object.keys(repo.options).map(k => {
repos.push({
name: repo.name,
param1: k,
param2: repo.options[k].param2
});
});
});
console.log(repos);