Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组变量在第二次使用时为空_Javascript_Arrays_Filter - Fatal编程技术网

Javascript数组变量在第二次使用时为空

Javascript数组变量在第二次使用时为空,javascript,arrays,filter,Javascript,Arrays,Filter,我刚从C#开始接触javascript,有一种感觉,我不太了解变量赋值和操作的一些基本原理。 我有一个函数,可以根据年份和类别组过滤一些结果。 第一次运行该函数时,它会按预期工作 thisSchoolArray在外部填充,并不断保留其值。filteredArray未按预期更新。我可以想象,每次函数运行时,它都会将过滤器的所有结果放入FilterDarray。代码如下: 函数UpdateResults(){ var filteredArray=thisSchoolArray.filter(函数(项

我刚从C#开始接触javascript,有一种感觉,我不太了解变量赋值和操作的一些基本原理。 我有一个函数,可以根据年份和类别组过滤一些结果。 第一次运行该函数时,它会按预期工作

thisSchoolArray在外部填充,并不断保留其值。filteredArray未按预期更新。我可以想象,每次函数运行时,它都会将过滤器的所有结果放入FilterDarray。代码如下:

函数UpdateResults(){
var filteredArray=thisSchoolArray.filter(函数(项){
返回item.TestResults.some(e=>e.TestYear==yearToDisplay);
});
console.log(filteredArray);//第一次工作,下次函数运行时清空
var filteredClass=filteredArray.filter(x=>x.ClassGroup===classToDisplay);
filteredResults=filteredClass;
console.log(filteredResults);//第一次工作,下次函数运行时为空
表.setData(filteredResults);
UpdateRoundScores();
}
以下是登录到控制台的内容:

事实证明,我通过下拉菜单更改的显示年份是罪魁祸首。当我在寻找一个int传递到yearToDisplay变量时,下拉值将以字符串的形式出现。另一个简单但被忽视的问题是,解决方法是

yearToDisplay = parseInt(dropdown.value)

如果第二次调用时
filteredArray
变为空,则表示
thisSchoolArray
yearToDisplay
已更改。它本身已经变成了一个空数组,或者不再有任何与
yearToDisplay
匹配的元素。我怀疑问题在于:。将日志语句更改为
console.log(filteredArray.slice())
console.log(JSON.stringify(filteredArray))
,这样您就可以得到一个不变的快照。或者
yearToDisplay
classToDisplay
正在更改。你能创建一个演示问题的脚本吗?哦,是的,不要使用
console.log
进行调试。请改用调试器~@Phil DevTools与控制台不是一回事吗?仅供参考,总是建议对parseInt使用第二个参数,即
parseInt(dropdown.value,10)
为什么这会更好@Phil?既然是一年,那么应该使用parseInt(dropdown.value,4),因为一年中只有4个数字?我建议您阅读文档