Javascript Splice函数,用于删除数组中6/7的条目
我在试着理解我哪里出了问题。假设我有一个数组:Javascript Splice函数,用于删除数组中6/7的条目,javascript,arrays,splice,Javascript,Arrays,Splice,我在试着理解我哪里出了问题。假设我有一个数组: result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 我想去掉数组中的每6个条目,将第7个条目保留在那里,然后执行一个。实际上,我希望去掉数组中6/7的值。我认为splice()可能非常适合这样做,但不知何故,下面的代码似乎不起作用。有什么建议吗 非常感谢大家 function random_select () { for(var i
result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
我想去掉数组中的每6个条目,将第7个条目保留在那里,然后执行一个。实际上,我希望去掉数组中6/7的值。我认为splice()可能非常适合这样做,但不知何故,下面的代码似乎不起作用。有什么建议吗
非常感谢大家
function random_select ()
{
for(var i=0; i < result.length; i+7)
{
result.splice[i,6];
}
};
函数随机选择()
{
对于(变量i=0;i
试试这个:
var result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
for (var i = 0; i < result.length; i++) result.splice(i, 6);
var结果=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
对于(var i=0;i
这将:
[0,1,2,3,4,5]
,然后将[6,7,8,9,10,11,12,13,14,15,16]
删除[7,8,9,10,11,12]
,然后让[13,14,15,16]
继续[13,14,15,16]
[6,13]
。这就是你想要的吗?试试这个:
var result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
for (var i = 0; i < result.length; i++) result.splice(i, 6);
var结果=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
对于(var i=0;i
这将:
[0,1,2,3,4,5]
,然后将[6,7,8,9,10,11,12,13,14,15,16]
删除[7,8,9,10,11,12]
,然后让[13,14,15,16]
继续[13,14,15,16]
因此,结果是
[6,13]
。这就是您想要的吗?有两个问题:(a)您正在修改数组,同时从头到尾对其进行迭代。你必须以相反的顺序迭代它。(b) 您永远不会推进循环索引i+7
应该是i+=7
。(c) splice
是一个函数,必须像调用splice(x,y)
而不是splice[x,y]
一样调用它。将i+1
更改为i++
,并将结果更改为result.splice(i+1,6)
。由于数组已发生变异并重新编制索引,因此当前索引将成为.splice()
之后的下一项。因此,我们在下一个索引上开始变异,因此您所需要做的就是超越当前索引,以获得下一个倍数的7
。如果需要删除0
,请在循环后添加result.shift()
。(重新表述我以前的评论)有两个问题:(a)在从头到尾迭代数组时,您正在修改数组。你必须以相反的顺序迭代它。(b) 您永远不会推进循环索引i+7
应该是i+=7
。(c) splice
是一个函数,必须像调用splice(x,y)
而不是splice[x,y]
一样调用它。将i+1
更改为i++
,并将结果更改为result.splice(i+1,6)
。由于数组已发生变异并重新编制索引,因此当前索引将成为.splice()
之后的下一项。因此,我们在下一个索引上开始变异,因此您所需要做的就是超越当前索引,以获得下一个倍数的7
。如果需要删除0
,请在循环后添加result.shift()
。(重新表述我之前的评论)嘿,阿迪特,这个关于费利克斯和特拉恩的建议对我来说做得很好,非常感谢!嘿,阿迪特,这是费利克斯和特拉恩的建议,对我来说做得很好,非常感谢!