Javascript 如何更改具有一个值的数组范围?

Javascript 如何更改具有一个值的数组范围?,javascript,arrays,Javascript,Arrays,我有一个像下面这样的数组 var myArray = ["1", "", "", "2","3","","","8"]; 我想用前面的NOTNULL值填充每个“”值 根据这一预期,应该如下所示 var myArray = ["1", "2", "2", "2","3","8","8","8"]; 这是我试过但没用的 var myArray=[“1”、“2”、“3”、“8”]; 函数myFunction(){ 设currentEl=myArray[0]; 设prevIndex=0; 水果图(

我有一个像下面这样的数组

var myArray = ["1", "", "", "2","3","","","8"];
我想用前面的NOTNULL值填充每个“”值

根据这一预期,应该如下所示

var myArray = ["1", "2", "2", "2","3","8","8","8"];
这是我试过但没用的

var myArray=[“1”、“2”、“3”、“8”];
函数myFunction(){
设currentEl=myArray[0];
设prevIndex=0;
水果图((e,a)=>{
如果(e!=“”&myArray[a-1]=“”){
电流EL=e;
让间隔=阵列生成(a-currentIndex-1,currentEl);
水果.拼接(电流指数-1,电流EL+1,间隔);
currentIndex=a;
}
})
}
函数arrayGenerate(迭代,值){
设arr=[];

对于(var i=0;i,您可以映射新值并找到缺少的以下值

var数组=[“1”、“2”、“3”、“8”],
结果=数组.map((v,i,a)=>v|a.find((w,j)=>j>i&&w));

console.log(result);
我已经这样做了。我循环并检查下一个元素是否有错误,而不是最后一个元素

var myArray=[“1”、“2”、“3”、“8”];
函数fillArr(arr){
for(设i=arr.length-1;i>=0;i--){
如果(!arr[i-1]&&i!=arr.length){
arr[i-1]=arr[i];
}
}
返回arr;
}
让结果=fillArr(myArray);

console.log(result);
您可以使用堆栈数组来堆栈空项的索引,然后在myArray中遇到非空项时取消堆栈。(堆栈不是保留关键字,因此您可以任意调用它):

var堆栈=[]
对于(var i=0;i=0;j--){
myArray[stack[j]]=myArray[i];
叠层拼接(j,1);
}
}
}

有趣的是,有很多不同的方法可以做到这一点。这只是做同样事情的另一种稍微丑陋的方法:

const fill=(arr,lastVal)=>(
反向排列
.map(el=>el.length>0?lastVal=el:lastVal)
.reverse()
);

console.log(fill([“1”、“2”、“3”、“8”);
最后两个空字符串的前一个NOTNULL值不是应该是“3”而不是“8”吗?这回答了op的预期输出,这很酷,但是“我想用前一个NOTNULL值填充每个”“值”怎么办?它不冲突吗?因此根据这个输出应该是1”、“1”“,”1“,”2“,”3“,”3“,”3“,”3“,”8“。只是要补充一点。@Supercool.,有时措辞很难,但示例显示了结果应该是什么样子……这将是我的选择,
,而
始终是:D
var stack = []
for(var i = 0; i < myArray.length; i++){
   if(myArray[i] === "")
    stack.push(i);
   else if(stack.length !== 0){
       for(var j = stack.length - 1 ; j > =0; j--){
         myArray[stack[j]] = myArray[i];
         stack.splice(j,1);
       }
   }
}