Javascript 将对象间歇推送到阵列
我有一个简单的代码块,它不能按预期工作。代码解析一个对象数组,并使用前一个数组中的累积大小创建第二个数组。该代码在某些数据集上运行良好,但在其他数据集上运行失败。这是非常奇怪的,因为所有数据集都是使用相同的工具生成的,并且在空白处没有差异 程序失败的地方是将新创建的对象推送到数组中。在某些数据集上,它推送一个空对象,而在其他数据集上,它正确地推送它。失败的控制台日志示例如下: html:461{name:“Chr15”,大小:6397009} html:467(24)[{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…}长度:0 而功能代码的日志: 461{名称:“Chr4”,尺寸:28450051} 467(35)[{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…}Javascript 将对象间歇推送到阵列,javascript,Javascript,我有一个简单的代码块,它不能按预期工作。代码解析一个对象数组,并使用前一个数组中的累积大小创建第二个数组。该代码在某些数据集上运行良好,但在其他数据集上运行失败。这是非常奇怪的,因为所有数据集都是使用相同的工具生成的,并且在空白处没有差异 程序失败的地方是将新创建的对象推送到数组中。在某些数据集上,它推送一个空对象,而在其他数据集上,它正确地推送它。失败的控制台日志示例如下: html:461{name:“Chr15”,大小:6397009} html:467(24)[{…},{…},{…},{
var sizetracker=[];
Blocks.forEach(function (arrayItem) {
var tempname=arrayItem.QueChr;
var tempsize=parseInt(arrayItem.RefEnd)-parseInt(arrayItem.RefStart);
var temptest=false;
sizetracker.forEach(function (newarrayItem) {
if(newarrayItem.name==tempname){
newarrayItem.size=newarrayItem.size+tempsize;
temptest=true;
}
});
if (temptest==false) {
var datapoint = {};
datapoint.name=tempname;
datapoint.size=tempsize;
console.log(datapoint);
sizetracker.push(datapoint);
}
});
console.log(sizetracker);
我现在不知道。输入没有明显的差别。问题在于整数和字符串。在将值添加到对象之前,我将其转换为字符串。然后推动起了作用。我不知道为什么这样做有效,但我不是在研究这个问题。你能制作一个功能性JavaScript/HTML/CSS片段(Ctrl-M)来演示两个示例对象,一个失败,一个成功吗?
.forEach()
调用的迭代限制在迭代开始时确定。您添加到回调中的数组中的元素将不会是“循环”的一部分。我不确定如果没有适当的解决方案,我们能否解决这个问题-代码在我看来还行,但我不知道块中的任何内容的预期值是什么。