解析数组时遇到困难
Difficulties parsing an array
parsePre 的这个函数调用在数组中的第一个元素 [ 1, "PHYS112", "PHYS122" ] 之后停止。它不会继续到数组中的下一个元素。我想知道是否有东西阻止 for 循环在第一次调用时继续?
var stuff = {
"subject":"PHYS",
"catalog_number":"375",
"title":"Stars",
"prerequisites":"Prereq: PHYS 112 or 122 and two of PHYS 234, 241, 242, 256, 258'/358, 263, 275",
"prerequisites_parsed":[
[ 1, "PHYS112", "PHYS122" ],[ 2,"PHYS234","PHYS241","PHYS242","PHYS256",
[ 1, "PHYS258", "PHYS358"],
"PHYS263", "PHYS275"]]
};
var pr = stuff.prerequisites_parsed;
var parsePre = function (pre){
console.log(pre);
console.log(pre.length);
for(i = 0; i < pre.length; i++){
console.log(i);
if(typeof pre[i] === 'number'){
console.log(pre[i] + " of: ");
}
else if(typeof pre[i] === 'string'){
console.log(pre[i] + ", ");
}
else {
console.log("WE SHOULD RECURSE");
parsePre(pre[i]);
}
}
}
parsePre(pr);
递归被破坏,因为每次调用都在 for
循环中重用相同的i
变量。要解决此问题,请将您的行替换为:
for (var i = 0; ... )
这是因为当您赋值到变量而不使用 var
时,它被视为全局变量。这是特定于JavaScript的怪癖,但不是大多数其他语言。
将来,您可以通过将这一行放在JavaScript代码的顶部来解决这些问题:"use strict";
相关文章:
- 将子文档推送到父数组时遇到问题
- AngularJs 帮助,在传递给隔离范围的对象中选择数组时遇到问题
- 解析数组时遇到困难
- 在 javascript 数组中播放音频文件时遇到问题
- 显示 JavaScript 数组时遇到问题
- 比较数组时遇到麻烦
- 返回数组元素时遇到问题
- 我在使用数组及其元素时遇到问题
- 获取 get JSON 显示数组中的值时遇到问题
- 在设置条件以仅在数组中存在相应对象时才执行函数时遇到问题
- 尝试将IF语句与数组一起使用时遇到问题
- 在for循环数组检查和JSON变量方面遇到问题
- 从数组中删除对象时遇到麻烦
- 在JavaScript/jQuery中传递整个二维数组作为参数时遇到麻烦
- 在angular(循环中的循环)中创建新的对象数组时遇到麻烦
- 在javascript中访问数组值时遇到麻烦
- 在Angular控制器中解析json/string版本的数组时遇到问题
- 我在添加数组的这些元素时遇到了麻烦.破折号似乎抑制了每个变量的添加
- 在将特定键推入数组时遇到困难
- Javascript在解析对象数据时遇到数组问题