循环数组,并添加值以启动Javascript
我需要做的是——简单的任务——我正在循环数组。当循环数组,并添加值以启动Javascript,javascript,Javascript,我需要做的是——简单的任务——我正在循环数组。当数组[i]==0时 我想+1到开始,对于数组[i]==1也是一样的。 但是当array[i]将返回(回到刚才的位置)时,我不想+1到开始,我这样做了: var start = 0; var array = [0,1,0,0,1,0,0,1]; for (i=0; i < array.length; i ++) { if (array[i] === 0) { start += 1; if (array[i + 1]
数组[i]==0时代码>
我想+1
到开始
,对于数组[i]==1
也是一样的。
但是当array[i]
将返回(回到刚才的位置)时,我不想+1
到开始
,我这样做了:
var start = 0;
var array = [0,1,0,0,1,0,0,1];
for (i=0; i < array.length; i ++) {
if (array[i] === 0) {
start += 1;
if (array[i + 1] === 1) {
start -= 1;
}
}
else if (array[i] === 1) {
start += 1;
if (array[i + 1] === 0) {
start -= 1;
}
}
}
console.log(start)
var start=0;
var数组=[0,1,0,0,1,0,0,1];
对于(i=0;i
但是如果array=[0,1,1,0,0,0,1,0,0,0,1]
,如果数组[i]
会回到很久以前的位置吗?我不想从+1
开始
想象0
和1
像图表上的-1
和+1
,所以控制台上的日志(开始)
从数组=[0,1,1,0,0,0,1,0,0,1]
应该是5
我的代码是某种硬编码,你知道如何修复吗?
感谢您提前回复
评论示例
[0,1,1,0,0,0,1,0,0,0,0,1]
应产生5的结果;您需要想象0==-1
和1==+1
然后数组看起来像[-1,+1,+1,+1,-1,-1,+1,-1,-1,+1]
,从0开始,我们有5个位置,其中我只有1次。正如@nurdyguy指出的,您对数组[i+1]
的调用将超出最后一个元素的范围。我已经将比较翻转到上一个元素,并在第二个元素上开始循环以应对这种情况
您似乎在计算+=1
,而不考虑二进制结果,那么只有-=1
时,数组中的下一个元素不同,所以本质上我认为您的结果与您要查找的相反:
var start = 0;
var array = [0,1,0,0,1,0,0,1];
for (i=1; i < array.length; i++) {
if (array[i] === array[i-1]) {
start++;
}
}
var start=0;
var数组=[0,1,0,0,1,0,0,1];
对于(i=1;i
现在,如果您想计算元素在每个步骤中的更改次数,则只需翻转逻辑:
var start = 0;
var array = [0,1,0,0,1,0,0,1];
for (i=1; i < array.length; i++) {
if (array[i] !== array[i-1]) {
start++;
}
}
console.log("The result is: " + start) // The result is: 5
var start=0;
var数组=[0,1,0,0,1,0,0,1];
对于(i=1;i
我想这就是你想要的,如果不是,请详细说明
编辑:
抱歉,我测试了你的另一个数组,结果也是5
那么,您需要的是:
var start = 0;
var array = [0,1,1,1,0,0,0,1,0,0,0,1];
for (i=0; i < array.length; i++) {
start += array[i];
}
console.log("The result is: " + start) // The result is: 5
var start=0;
var数组=[0,1,1,0,0,0,1,0,0,0,1];
对于(i=0;i
如果0和1的数组仅作为示例,则使用逻辑:
var start = 0;
var array = [0,1,1,1,0,0,0,1,0,0,0,1];
for (i=0; i < array.length; i++) {
array[i] == 1 ? ++start : +-start;
}
console.log("The result is: " + start) // The result is: 5
var start=0;
var数组=[0,1,1,0,0,0,1,0,0,0,1];
对于(i=0;i
或:
var start=0;
var数组=[0,1,1,0,0,0,1,0,0,0,1];
对于(i=0;i
如果数组像你说的那样变成[-1,1,1,1,-1,-1,1,-1,-1,-1,1]
,那么结果不是5
,而是-3
?,你需要计算数组中值的变化。您需要存储最后一个值以检查下一个值。如果最后一个值与实际值不同,则需要进行计数
函数getChanges(数组){
变量计数=0,
last=数组[0],
我
对于(i=1;i log(getChanges([0,1,1,0,0,0,1,0,1])代码>如果使用i
则您的数组[i+1]
将出现问题。请添加一些用例和所需结果。你为什么要计算0、1
或1、
0、相同值或全部1
?结果5应该来自数组=[0,1,1,1,0,0,0,1,0,0,0,1],你需要将0和1想象成图表上的-1和+1,所以console.log(start)from array=[0,1,1,1,0,0,0,0,1]应该是5,然后数组看起来像这样(-1,+1,+1,+1,-1,-1,+1,-1,-1,-1,+1)从0开始,我们有5个位置,其中我只有1time@bafix2203please看看我的编辑,我想我明白了。我会在你的问题中编辑这些额外的信息,因为这对问题的范围至关重要。
var start = 0;
var array = [0,1,1,1,0,0,0,1,0,0,0,1];
for (i=0; i < array.length; i++) {
if (array[i] == 1) {
++start
}
}
console.log("The result is: " + start) // The result is: 5