gpt4 book ai didi

javascript - For 循环在 Javascript 中多次追加对象

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

我有以下代码。

const timeLabels = [
{ name: "1:00 AM", present: true, label: ["1:00", "2:00"], value: "1:00" },
{ name: "2:00 AM", present: true, label: ["2:00", "3:00"], value: "2:00"},
{ name: "3:00 AM", present: true, label: ["3:00", "4:00"], value: "3:00" },
];

const targetedTimes = [["0:00", "1:00"], ["1:00", "2:00"]]

let actualTime = [];

console.log("getting time");
console.log("start: the actualTime is", actualTime);
for (var j = 0; j < timeLabels.length; j++) {
console.log("x");
var currItem = timeLabels[j];
var label = JSON.stringify(currItem.label);
var adTime = JSON.stringify(targetedTimes);
if (adTime.indexOf(label) >= 0) {
currItem.present = true;
} else {
currItem.present = false;
}
console.log("the current item is", currItem);
actualTime.push(currItem);
console.log("The actual time is", actualTime);
}

在第一次迭代中,currItem 为

{name: "1:00 AM", present: true, label: Array(2), value: "1:00"} 

但实际时间是

   [{name: "1:00 AM", present: true, label: Array(2), value: "1:00"}, 
{name: "2:00 AM", present: false, label: Array(2), value: "2:00"},
{name: "3:00 AM", present: false, label: Array(2), value: "3:00"}]

当我在第一次迭代时只附加 1 时,为什么实际时间列表会有三个值?

最佳答案

发生的情况是控制台正在打印对该对象的引用(因为数组是 javascript 中的一种对象类型),因此当您打印它并在控制台中读取它时,每个 console.log 语句都指向在同一个最终数组中,这就是为什么每次值都相同的原因。

Have a look at this similar StackOverflow question for more insight.

我尝试在节点上运行您的脚本,它在每次迭代中正确打印出数组,第一次迭代中只有一个项目,因此您的代码很好。

关于javascript - For 循环在 Javascript 中多次追加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996486/

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