Skip to content

使用指定的值初始化JavaScript数组

很多时候,您需要使用给定的长度初始化一个数组,并用相同的值填充它。例如,您可能想创建一个填充了0null值的数组。其他情况下,您可能希望使用重复的值序列初始化一个数组。幸运的是,在JavaScript中,这些任务都很简单。

使用指定的值初始化数组

最简单和最常见的情况是将数组初始化为所有项都具有相同值。我们可以使用Array()构造函数创建一个具有所需长度的数组,然后使用Array.prototype.fill()方法将其填充为所需的值。如果您没有提供默认值,您可以将默认值设置为0,以方便使用。

const initializeArrayWithValues = (n, val = 0) => Array(n).fill(val);

initializeArrayWithValues(5, 2); // [2, 2, 2, 2, 2]

使用多个值初始化数组

一个更复杂的情况是使用多个值初始化数组。提供一个值的数组是不可取的,因为我们想要的值本身可能就是数组。相反,我们将选择使用剩余参数,这样我们就可以提供任意数量的参数。这样,我们可以提供任意多个值,甚至允许将数组视为任何其他值。

在确定了接口后,我们可以检查值的长度以不同方式处理每种情况。如果没有值,我们仍然默认为0,而只有一个值将与前面的代码片段相同处理。

最后,如果提供了多个值,我们将使用Array.from()创建一个具有所需长度的数组。然后,我们将使用该方法的第二个参数将数组映射到给定的值,使用取模(%)运算符循环遍历这些值。

const initializeArrayWithValues = (n, ...vals) => {
  if (vals.length === 0) return Array(n).fill(0);
  if (vals.length === 1) return Array(n).fill(vals[0]);
  return Array.from({ length: n }, (_, i) => vals[i % vals.length]);
};

initializeArrayWithValues(5); // [0, 0, 0, 0, 0]
initializeArrayWithValues(5, 2); // [2, 2, 2, 2, 2]
initializeArrayWithValues(5, 2, 3); // [2, 3, 2, 3, 2]
initializeArrayWithValues(3, [2, 3]); // [[2, 3], [2, 3], [2, 3]]