Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 如何在添加新元素的同时替换空间?_Javascript_Arrays_Algorithm - Fatal编程技术网

Javascript 如何在添加新元素的同时替换空间?

Javascript 如何在添加新元素的同时替换空间?,javascript,arrays,algorithm,Javascript,Arrays,Algorithm,我有一个元素的阶梯数组,填充如下: 类漏斗{ 构造函数(){ this.funnelContents=[]; 该层=0; } 获取内容(){ 返回此.funnel内容; } 填充(…nums){ let指数,startIndex=0; for(设i=0;i-1&&nums.length>0){ this.funnelContents[i][index]=nums.shift(); startIndex=指数+1; } } 返回nums .splice(0,15-此.funnel内容.reduc

我有一个元素的阶梯数组,填充如下:

类漏斗{
构造函数(){
this.funnelContents=[];
该层=0;
}
获取内容(){
返回此.funnel内容;
}
填充(…nums){
let指数,startIndex=0;
for(设i=0;i-1&&nums.length>0){
this.funnelContents[i][index]=nums.shift();
startIndex=指数+1;
}
}
返回nums
.splice(0,15-此.funnel内容.reduce((计数,行)=>count+row.length,0))
.filter(num=>num<10)
.reduce((arr,num)=>{
if(此漏斗内容长度){
this.funnelContents[this.funnelContents.length-1]=this.funnelContents[this.funnelContents.length-1].filter(char=>char!='';
if((this.funnelContents[this.layer]| |[]).length!==this.funnelContents[this.layer-1].length+1){
this.funnelContents[this.layer]=[…(this.funnelContents[this.layer]| |[]),num];
}否则{
这个.layer++;
this.funnelContents[this.layer]=[num];
}
}
否则{
这个.layer++;
this.funnelContents=[…this.funnelContents,[num]];
}
}, []);
}
toString(){
设str='',nums='',spaceScont=1;
对于(设i=5;i>0;i--){
str+='\\';
for(设j=0;jconsole.log(漏斗7.toString());//没有任何更改
您可以采用单个循环,并随着长度的增加对子字符串进行切片

功能漏斗(阵列){
var i=0,
l=0,
结果=[];
而(i

.as控制台包装{max height:100%!important;top:0;}
您对代码应该做什么(如果有效)有什么解释吗?可能有一些例子吗?您已经创建了一个优秀的工作代码段。但是,这只是创造一个好的环境的一部分。请解释他的代码应该做什么,并添加一些示例输入和预期输出。请添加一个示例和预期结果,这是一个非常有趣的问题。这可能不明显,但在代码的最后一行中有一条注释,带有预期结果。原来是这样的,有四个值的结果。但是,对于更少或更多的值,应该发生什么呢?
fill
doing的第一个调用是什么?我可以在这里为输出的可读性提供建议吗:制作一个输出函数
out=(x)=>console.log(JSON.stringify(x))
在一行上获得输出。@Wyck,好主意!哇,我以前没有注意到这个解决方案。但问题有所不同。数组可能包含空格。添加新元素时,应将空格替换为新元素。我已经接受了这样一个事实,即在添加元素的周期内,不可能符合检查,而且不知何故,这将是一个不同的周期。我最初对添加并同时用新元素替换空间的解决方案感兴趣。非常感谢您提供这个优雅的解决方案!再次更新帖子。又添加了一个示例(第2个),从中可以清楚地看出,您的第一个解决方案