I have an array where I would like to replace the zero values with the previous non-zero value.
i.e. convert { 15, 0, 0, 23, 0, 0, 0 } to { 15, 15, 15, 23, 23, 23, 23 }
Any ideas?
Discussion posts and replies are publicly visible
Pretty much the exact same thing was answered several months ago, here. The only real difference in that case is the zero values are replaced by the next nonzero member instead of the previous, but that should require only a very simple adjustment of the code.
Additionally, here's some sample code that should fit the bill:
a!localVariables( local!data: {15,0,0,23,0,0,0}, local!nonZeroIndexes: a!forEach( items: local!data, expression: if(fv!item=0,null,fv!index) ), a!forEach( items: local!data, expression: if( fv!item<>0, fv!item, index( local!data, max(rdrop(local!nonZeroIndexes,count(local!nonZeroIndexes)-fv!index)), null ) ) ) )