我正在尝试填充数组:
var array2 = ["a", "b", "c"];
使用一些随机数/值,以便该值分隔每个原始值。 但是,使用这样的for循环:
for (var am = 1; am < array2.length; am+2) {
array2.splice(am, 0, undefined);
}
导致我的浏览器冻结,因为在每次拼接时,array2的长度会发生变化并导致无限循环,所以我尝试了这种方法:
var l = array2.length;
for(var i = 1; i < l; i+2) {
array2.splice(i, 0, undefined);
}
现在我不知道发生了什么。我假设l
再次发生变异。
我必须将i
推进为2,因为第一次拼接后的array2变为:
["a", undefined, "b", "c"];
但是,由于i = 3
我设置了表达式i < l
,唯一的解释是l
再次发生变化。
欢迎任何解释。我希望代码进行的最终结果是:
array2 = ["a", undefined, "b", undefined, "c"];
答案 0 :(得分:3)
for (var am = 1; am < array2.length; am+2) {
您实际上并没有在该行中增加am
。将其更改为:
for (var am = 1; am < array2.length; am+=2) {
使用+=
表示am = am + 2
答案 1 :(得分:1)
你可以试试这个:
var array2 = ["a", "b", "c"];
var l = array2.length;
// Stop 1 item before the end and set steps of 1 item
for(var i = 0; i < (l - 1); ++i) {
// You inserting starting from index 1 and move 2 items ahead for each element
array2.splice(1 + (i * 2), 0, undefined);
}
答案 2 :(得分:0)
你可以用:
var array2 = ["a", "b", "c"],
length = array2.length,
output = [];
for ( var i = 0; i < length; i++ ) {
output.push(array2[i]);
if ( i < length - 1 ) {
output.push(undefined);
}
}
// output:
// ["a", undefined, "b", undefined, "c"]