我有一个简单的代码块,它不能按预期工作。该代码解析一个对象数组,并使用在前一个数组中找到的累积大小创建另一个对象数组。该代码在某些数据集上运行良好,但在其他数据集上运行失败。这非常奇怪,因为所有的数据集都是使用相同的工具生成的,并且在空白中没有差异。
程序失败的地方是将新创建的对象推入数组。在某些数据集上,它会推送一个空对象,而在另一些数据集上,它会正确地推送它。失败的控制台日志示例如下:
Index.html:461 {名称:"Chr15",大小: 6397009}
Index.html:467 (24)和{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…}长度:0
而功能码日志: 461 {名称:"Chr4",大小: 28450051}
Index.html:467 (35)和{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…} 0:{名称:"NKLS02002208_1",大小: 2922554}
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);
在这一点上我不知道。在输入方面没有明显的差异。
发布于 2019-11-28 12:03:43
问题出在整数和字符串上。在将这些值添加到对象之前,我将它们转换为字符串。然后,推送起作用了。我不知道为什么这样做是可行的,但我并不是在追求这个问题。
https://stackoverflow.com/questions/59076932
复制相似问题