使用指定的值初始化JavaScript数组
很多时候,您需要使用给定的长度初始化一个数组,并用相同的值填充它。例如,您可能想创建一个填充了0
或null
值的数组。其他情况下,您可能希望使用重复的值序列初始化一个数组。幸运的是,在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]]