创建一个包含 N 个元素的数组,在 JavaScript 中具有相同的值

创建一个包含 N 个元素的数组,JavaScript 中的值相同

Create an Array with N elements, same Value in JavaScript

要创建一个包含 N 个元素且包含相同值的数组:

  1. 使用Array()构造函数创建一个包含 N 个元素的数组。
  2. 使用该fill()方法用特定值填充数组。
  3. fill()方法将数组中的所有元素更改为提供的值。
索引.js
const arr = Array(3).fill('a'); console.log(arr); // 👉️ ['a', 'a', 'a']
我们首先使用Array()构造函数创建一个包含 3 个空元素的数组。
索引.js
// 👇️ [ <3 empty items> ] console.log(Array(3));

我们使用
Array.fill
方法用特定值填充数组。

索引.js
// 👇️ [ 'abc', 'abc', 'abc' ] console.log(Array(3).fill('abc'));

该方法接受一个值并使用它来替换所有数组元素。

使用 Array.from() 方法代替

或者,您可以使用Array.from()方法而不是Array()
构造函数。

索引.js
const arr = Array.from({length: 3}).fill('a'); console.log(arr); // 👉️ ['a', 'a', 'a']

我们将所需的数组长度作为参数传递给
Array.from方法。

使用该Array.from方法比实例化构造函数更明确且更易于阅读Array

创建一个包含 N 个具有相同值的非原始元素的数组

创建具有相同值的 N 个非原始元素的数组时,请使用该
Array.from()方法。

索引.js
const arr = Array.from({length: 3}, () => { return {name: 'Bobby Hadz'}; }); // [ // { name: 'Bobby Hadz' }, // { name: 'Bobby Hadz' }, // { name: 'Bobby Hadz' } // ] console.log(arr);

创建一个非原始值的数组有点棘手,因为我们必须确保数组中的对象没有相同的引用。

如果对象存储在内存中的相同位置,一旦一个对象被更新,它们就会全部更新。

相反,我们将一个map()函数作为第二个参数传递给该
Array.from()方法。

在函数的每次调用中map,我们返回一个对象。

如果更新一个对象,更改不会反映在对象对象中,因为它们都存储在内存中的不同位置。

索引.js
const arr = Array.from({length: 3}, () => { return {name: 'Bobby Hadz'}; }); // [ // { name: 'Bobby Hadz' }, // { name: 'Bobby Hadz' }, // { name: 'Bobby Hadz' } // ] console.log(arr); arr[0].name = 'new'; // [ { name: 'new' }, { name: 'Bobby Hadz' }, { name: 'Bobby Hadz' } ] console.log(arr);

更新name第一个对象的属性不会更新其他对象的属性。

创建一个二维数组,有N个元素,值相同

可以使用相同的方法创建具有 N 个元素、相同值的二维数组。

索引.js
const arr = Array.from({length: 2}, () => Array.from({length: 3}, () => { return {name: 'Bobby Hadz'}; }), ); // [ // [ // { name: 'Bobby Hadz' }, // { name: 'Bobby Hadz' }, // { name: 'Bobby Hadz' } // ], // [ // { name: 'Bobby Hadz' }, // { name: 'Bobby Hadz' }, // { name: 'Bobby Hadz' } // ] // ] console.log(arr);

请注意,我们使用了该Array.from()方法两次。

The outer call to the Array.from() method determines the length of the outer
array.

The nested call to Array.from() determines the length of each nested array.

# Repeating multiple values N times

You can use the same approach if you need to create an array by repeating
multiple values N times.

index.js
const arr = Array(3).fill(['a', 'b', 'c']).flat(); // [ // 'a', 'b', 'c', // 'a', 'b', 'c', // 'a', 'b', 'c' // ] console.log(arr);

We passed an array of values to the Array.fill() method and use the
Array.flat() method to flatten the array.

You can also pass a map function as the second argument to the Array.from()
method when working with primitives.

index.js
const arr = Array.from({length: 5}, () => { return 'a'; }); // 👇️ [ 'a', 'a', 'a', 'a', 'a' ] console.log(arr);

The code sample creates an array of 5 elements with the value of a.

You can also explicitly chain a call to the Array.map() function on the output
of the Array.from() method.

index.js
const arr = Array.from(Array(5)).map(() => { return 'a'; }); // 👇️ [ 'a', 'a', 'a', 'a', 'a' ] console.log(arr);

The Array.map() function gets called for each element in the array.

Alternatively, you can use a for loop.

# Create an Array with N elements, same Value using a for loop

This is a three-step process:

  1. Declare a variable that stores an empty array.
  2. Use a for loop to iterate N times.
  3. On each iteration, push the value into the array.
index.js
const arr = []; const total = 3; for (let i = 0; i < total; i++) { arr.push('a'); } console.log(arr); // 👉️ ['a', 'a', 'a']

We declared a new arr variable and initialized it to an empty array.

We used a for loop to iterate N times and on each iteration, we pushed the
value into the new array.

Using a for loop is a bit more verbose, but many developers are familiar with
how loops work.

# Create an Array with N elements, same Value using a while loop

You can also use a while loop to create an array of N elements with the same
value.

index.js
let total = 3; const arr = []; while (total--) { arr.push('a'); } console.log(arr); // 👉️ [ 'a', 'a', 'a' ]

在循环的每次迭代中while,我们递减total变量直到它被设置为0

零在 JavaScript 中是一个伪值,所以一旦0达到,循环就会退出。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: