您好,我有一个模板对象,如下所示:
const baseObj = {
objKey: '',
index: 1,
cells: [
{
key: 'id',
value: ''
},
{
key: 'name',
value: ''
}
]
};
我想从数组创建对象的动态数组,如下所示:
const allDetails = [
{
objKey: '876',
name: 'abc',
id: '123',
address: '123abc'
},
{
objKey: '098',
name: 'def',
id: '456',
address: '456def'
},
]
为此,我编写了一个简单的循环,如下所示:
const allData = [];
for(let i = 0; i < allDetails.length; i++)
{
const detail = allDetails[i];
const row = Object.assign({}, baseObj);
row.cells = Object.assign([], baseObj.cells);
row.key = details.objKey;
row.index = i+1;
for(let j = 0; j < row.cells.length; j++)
{
const cell = row.cells[j];
switch(cell.key){
case 'id': {
cell.value = detail.id;
break;
}
case 'name': {
cell.value = detail.name;
break;
}
}
}
allData.push(row);
}
现在我期望 allData 为:
[
{
objKey: '876',
index: 1,
cells: [
{
key: 'id',
value: '123'
},
{
key: 'name',
value: 'abc'
}
]
},
{
objKey: '098',
index: 2,
cells: [
{
key: 'id',
value: '456'
},
{
key: 'name',
value: 'def'
}
]
}
]
但当我打印时,它给我的是:
[
{
objKey: '876',
index: 1,
cells: [
{
key: 'id',
value: '456'
},
{
key: 'name',
value: 'def'
}
]
},
{
objKey: '098',
index: 2,
cells: [
{
key: 'id',
value: '456'
},
{
key: 'name',
value: 'def'
}
]
}
]
看起来数组值每次都被覆盖。在调试时,我可以在更改行单元格的值时以某种方式看到它也在更改 baseObj 单元格的值。然而,只有对象数组出现问题。我看不出哪里出了问题,因为在每个循环中我都从 baseObj 创建新的对象行。谁能发现我犯的错误。
慕的地6264312
ibeautiful
相关分类