I have an array like this (make sure you scroll to the right):
[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
Where it will always be the same length. And there will always be some number of 0
's surrounding some number of 1
's. I am trying to find a good/efficient/smart way to turn the middle of the array of into 0's
when there is a padding of 4 1
's on each side. The result would be something like:
[0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
Where you now have a padding of 4 1
's on either side.
This is how I implemented it:
var a = [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0];
var hitOne = false;
var oneCount = 0;
var oneStopPoint = a.lastIndexOf(1) - 3;
for(var n in a){
if(n == oneStopPoint){
break;
}
if(a[n] == 1 && !hitOne) {
hitOne = true
oneCount++;
} else if(a[n] == 1 && hitOne) {
oneCount++;
}
if(oneCount > 4){
a[n] = 0;
}
}
console.log(a);