创建一个包含 N 个元素的数组,JavaScript 中的值相同
Create an Array with N elements, same Value in JavaScript
要创建一个包含 N 个元素且包含相同值的数组:
- 使用
Array()
构造函数创建一个包含 N 个元素的数组。 - 使用该
fill()
方法用特定值填充数组。 - 该
fill()
方法将数组中的所有元素更改为提供的值。
const arr = Array(3).fill('a'); console.log(arr); // 👉️ ['a', 'a', 'a']
Array()
构造函数创建一个包含 3 个空元素的数组。// 👇️ [ <3 empty items> ] console.log(Array(3));
我们使用
Array.fill
方法用特定值填充数组。
// 👇️ [ 'abc', 'abc', 'abc' ] console.log(Array(3).fill('abc'));
该方法接受一个值并使用它来替换所有数组元素。
使用 Array.from() 方法代替
或者,您可以使用Array.from()
方法而不是Array()
构造函数。
const arr = Array.from({length: 3}).fill('a'); console.log(arr); // 👉️ ['a', 'a', 'a']
我们将所需的数组长度作为参数传递给
Array.from方法。
Array.from
方法比实例化构造函数更明确且更易于阅读Array
。创建一个包含 N 个具有相同值的非原始元素的数组
创建具有相同值的 N 个非原始元素的数组时,请使用该
Array.from()
方法。
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
,我们返回一个对象。
如果更新一个对象,更改不会反映在对象对象中,因为它们都存储在内存中的不同位置。
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 个元素、相同值的二维数组。
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.
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.
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.
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:
- Declare a variable that stores an empty array.
- Use a
for
loop to iterate N times. - On each iteration, push the value into the array.
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.
let total = 3; const arr = []; while (total--) { arr.push('a'); } console.log(arr); // 👉️ [ 'a', 'a', 'a' ]
在循环的每次迭代中while
,我们递减total
变量直到它被设置为0
。
零在 JavaScript 中是一个伪值,所以一旦0
达到,循环就会退出。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: