Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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代码赢得';不要在while循环后运行_Javascript_Loops_While Loop - Fatal编程技术网

javascript代码赢得';不要在while循环后运行

javascript代码赢得';不要在while循环后运行,javascript,loops,while-loop,Javascript,Loops,While Loop,我试图编写一个循环,检查字符串中是否包含存储的变量,然后用存储的值替换该变量。我有一部分工作正常,但在我的while循环后,代码停止并不会运行。代码如下: var output=document.getElementById('output'); String.prototype.replaceAll=函数(搜索、替换){ var目标=此; 返回target.split(搜索)、join(替换); }; var Sortedvarray=[ //[varName、value、units、com

我试图编写一个循环,检查字符串中是否包含存储的变量,然后用存储的值替换该变量。我有一部分工作正常,但在我的while循环后,代码停止并不会运行。代码如下:

var output=document.getElementById('output');
String.prototype.replaceAll=函数(搜索、替换){
var目标=此;
返回target.split(搜索)、join(替换);
};
var Sortedvarray=[
//[varName、value、units、complex?]
[“d”,2,空,0],
[“h”,3,空,0],
[“u”,“d+h”,空,1]
];
var值='u+1';
var复数=真;
while(复杂){
复杂=错误;
对于(变量i=0;i-1-1&&sortedvarray[i][3]==1)
复杂=真实;
value=value.replaceAll(sortedvarray[i][0],sortedvarray[i][1]);
如果(复合)断裂;
}
output.innerHTML+=“
你好”; } output.innerHTML+=“
hello2”; var结果=评估(值); output.innerHTML+=”
result=“+result for循环中的

i - 1 < sortedVarArray.length
i-1
将索引0的数组迭代到length,其中array[length]=未定义。尝试:

i < sortedVarArray.length
i
我有一个数组sortedvarray,看起来像
——不太像,因为那不是一个有效的数组——d、h和u实际上是字符串“d”、“h”和“u”,还是d、h和u的值(您不与我们共享)。。。d+h实际上是字符串“d+h”还是值d+h?另外,什么是
replaceAll
?您还没有共享的另一个函数?@JaromandaX是的,它们是字符串。我已经编辑了原始帖子来显示这一点,并添加了replaceAll函数。您在控制台中有任何错误吗?“我的问题是,除非代码中断,否则代码不会跳出for循环”-为什么不?
for
循环中似乎没有任何内容会修改循环计数器
i
或数组
sortedVarArray
,因此为什么
for
循环在到达数组末尾时不会自然结束?很抱歉,我添加了标题,以澄清数组中的每个值代表什么。字符串引号添加到原始帖子中。@DanW,我已经编辑了您的问题,将所有信息合并到一个可以在页面上运行的片段中。您可以通过单击编辑字段上方的图标来添加/编辑代码段,该字段位于看起来像图片的字段右侧。将所有信息合并到一个块中(当所有信息合并在一起时;有时它位于多个文件中;不要合并这些文件)。将代码片段包含在代码片段中可以方便地检查(即运行),并允许应答者通过单击将代码复制到他们的答案中(更方便)。请随时恢复编辑。pfftt解决了它!谢谢你。我有点尴尬-出于某种原因,我认为
array.length
开始从0开始计数,因为VBA就是这么做的。谢谢大家的帮助。@DanW-JS中的数组索引确实从0开始。这就是为什么数组中的最后一个元素位于索引
array.length-1
。(但是VB很奇怪,因为当你声明一个VB数组时,你指定的是最后一个元素的索引,而不是长度。)@nnnnn是的,但是当你计算
array.length
时,它返回的是元素数,而不是元素数-1。因此,如果一个数组有两个元素
array.length
将返回
2
,元素将是
array[0]
array[1]
@DanW-这不是我刚才说的吗?(虽然实际上,在JS中,数组
.length
属性并没有告诉您数组中有多少个元素,它只是告诉您最高元素加1的索引,即密集数组中的元素数,而不是稀疏数组中的元素数:如果您说
var arr=[];arr[100]=true;
那么
arr.length
将是
101
但数组中只有一个元素。)@nnnnn我们似乎都在同一页上:)