如何将多个零推入已存在的数组

4
我在这个链接上找到了如何创建指定数量的零元素数组的方法。 Most efficient way to create a zero filled JavaScript array? 但是我的问题是,假设我已经有一个数组。
var a = ['hihi','haha']

如何在前两个元素后添加12个零?这样它就会变成:
a = ['hihi','haha',0,0,0,0,0,0,0,0,0,0,0,0];

of course I could go for a

for(var i = 0; i < 12, i++){
  a.push(0);
}

但是是否有一行代码的方法?类似于:
a.push(6*[0]);
5个回答

9

1
你可以使用链接中提供的解决方案创建一个包含12个零的数组,然后使用Array.prototype.concat函数创建所需的数组。
var zeroes = Array.apply(null, Array(12)).map(Number.prototype.valueOf, 0);
var laughters = ['hihi', 'haha'];
var combined = laughters.concat(zeroes);

1
function fillArray(value, len) {
  if (len == 0) return [];
  var a = [value];
  while (a.length * 2 <= len) a = a.concat(a);
  if (a.length < len) a = a.concat(a.slice(0, len - a.length));
  return a;
}

每次迭代它都会将数组加倍,因此可以通过少数迭代创建一个非常大的数组。

0
简而言之,取出你的数组并使用 concat 与你提到的the answer 进行连接。
var a = ['hihi','haha'].concat(Array.apply(null, Array(12)).map(Number.prototype.valueOf,0);)

嘿,所有的命题都有效,但是我为什么要使用你的方法而不是 ['hihi','haha'] .concat(Array(12).fill(0)),有什么区别吗? - Bidoubiwa
1
@user3089871,因为有时会填充不可用 - Nina Scholz

0

0必须是整数还是字符串?为什么要添加12个零?你到目前为止尝试了什么?

这只是一个简单的示例。

var a = ['hi', 'ha'];
for(var i = 0; 14 > a.length; i++){
a.push(0);
}

我正在回答原始问题。他后来添加了这个,我现在看到了。在问题中,他犯了一个错误,使用了12而不是14,因为数组中已经有2个字符串。原始问题是: 我在这个链接上找到了如何创建具有选择的零数的数组。创建零填充JavaScript数组的最有效方法是什么?但我的问题是,想象一下我已经有了一个数组var a = ['hihi','haha'] 如何在我的前两个元素后面添加12个零?以便它变成:a = ['hihi','haha',0,0,0,0,0,0,0,0,0,0,0,0]; - Rick Bronger
他没有提供任何例子。看看我前三个问题。他没有展示过他已经尝试过的代码示例。在我添加答案之后,他编辑了原始问题。所以我的答案现在不再有用。因此,说我的答案没用是不公平的。在他改变原始问题之前,它是有用的。 :) - Rick Bronger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接