gpt4 book ai didi

javascript - Array.push 在 forEach 循环中的 for 循环中不起作用。Javascript

转载 作者:行者123 更新时间:2023-12-01 12:03:43 25 4
gpt4 key购买 nike

我一直在尝试将一个包含 3 个值的数组推送到一个数组以创建一个 AOA。但是我的预期输出不正确。

输入数据如下所示

[
{id:xxxxx,
date:VALUE,
date:VALUE,
..months worth
},
{id:xxxx2,
date:VALUE,
date:VALUE,
..months worth
},
..loads of entries
]


请参阅下面的代码片段。
arrayOfObjects.forEach(e =>{            
let entry = [];
entry[0] = e.id;
let PC = Object.values(e)
let Dates = Object.keys(e)
PC.shift();
Dates.shift();
for(let i = 0; i <PC.length; i++){
if(PC[i] === 'No Data'){
entry[2] = 0;
entry[1] = Dates[i];
} else {
entry[2] = PC[i];
entry[1] = Dates[i];
}
finalArray.push(entry);
}

})

我得到一个包含静态日期的输出数组
[
...
[ 'NAAAAD', '10/31/19', 0 ],
[ 'NAAAAD', '10/31/19', 0 ],
[ 'NAAAAD', '10/31/19', 0 ],
[ 'NAAAAD', '10/31/19', 0 ],
[ 'NAAAAD', '10/31/19', 0 ],
[ 'NAAAAD', '10/31/19', 0 ],
[ 'NAAAAD', '10/31/19', 0 ],
...
]

当我想查看日期增量时。
[
...
[ 'NAAAAD', '10/25/19', 0 ],
[ 'NAAAAD', '10/26/19', 0 ],
[ 'NAAAAD', '10/27/19', 0 ],
[ 'NAAAAD', '10/28/19', 0 ],
[ 'NAAAAD', '10/29/19', 0 ],
[ 'NAAAAD', '10/30/19', 0 ],
[ 'NAAAAD', '10/31/19', 0 ],
...
]

我有 console.log(entry)就在它被插入数组之前,我当时包含正确的信息?我已移动 finalArray.push(entry)在 if 语句中,直接在输入正确的行下方。

这里发生了什么?我找不到这样的东西,我已经考虑过变量的范围,但它们似乎都是正确的。

谢谢

瑞安

最佳答案

我认为您可能需要每次在推送之前克隆对象:

arrayOfObjects.forEach(e =>{            
let entry = [];
entry[0] = e.id;
let PC = Object.values(e)
let Dates = Object.keys(e)
PC.shift();
Dates.shift();
for(let i = 0; i <PC.length; i++){
let newEntry = Object.assign([], entry);
if(PC[i] === 'No Data'){
newEntry[2] = 0;
newEntry[1] = Dates[i];
} else {
newEntry[2] = PC[i];
newEntry[1] = Dates[i];
}
finalArray.push(newEntry);
}

})

关于javascript - Array.push 在 forEach 循环中的 for 循环中不起作用。Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59787653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com