javascriptは指定されたサイズの空の配列を作成します


回答:


67
var arr = new Array(5);
console.log(arr.length) // 5

14
OPは尋ねましたin javascript how would I create an empty array of a given size。これはその問題を解決します。
mariocatch 2016年

12
OPは「空」の例を提供しています。
RobG 2016年

6
さて、これは質問に対する別のオプションです。彼らは提供された答えのいずれかを選択できます、それは
スタックオーバーフローの

235

1)反復できない新しい配列を作成するには、配列コンストラクターを使用できます。

Array(100) または new Array(100)


2)新しい配列を作成できます。これは次のように繰り返すことができます。

a)すべてのJavaScriptバージョン

  • Array.apply: Array.apply(null, Array(100))

b) ES6JavaScriptバージョンから

  • 破壊オペレーター: [...Array(100)]
  • Array.prototype.fill Array(100).fill(undefined)
  • Array.from Array.from({ length: 100 })

以下のように、これらの配列にマップできます。

  • Array(4).fill(null).map((u, i) => i) [0、1、2、3]

  • [...Array(4)].map((u, i) => i) [0、1、2、3]

  • Array.apply(null, Array(4)).map((u, i) => i) [0、1、2、3]

  • Array.from({ length: 4 }).map((u, i) => i) [0、1、2、3]


1
Array.prototype.fill(> = ES6)kangax.github.io/compat-table/es6/… ;
ptim 2017

4
今日の啓蒙-パート(A)で、コンストラクター構文を使用して新しく作成された配列は反復可能でさえないと述べたとき。Javascriptは時々本当に驚​​きます。
RBT 2017年

大きさは何であるArray(10000)とはempty x 10000
Qwerty 2018

1
その長さは10000で、次の方法で確認できます。console.log(Array(10000).length)ただし、実行するとArray(10000).forEach((u, i) => console.log(i))、出力は得られません
stpoa 2018

Array.apply('x', Array(10))実際には[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
Polv 2018

44

Array.from({length: 500})2017年から使用しています。


@ gion_13:私はそれが投票され、私のものは投票されていないのを見ます。理由?
7vujy0f0hy 2018

@ 7vujy0f0hyなぜあなたが票を落としたのかわかりません。あなたの解決策はこれよりも少し直感的ではありませんが、私はあなたに賛成票を投じました。
gion_13 2018

@ gion_13:私のソリューションに問題がないことを確認していただきありがとうございます☺。
7vujy0f0hy 2018

17

whileループを使用してみてください、Array.prototype.push()

var myArray = [], X = 3;
while (myArray.length < X) {
  myArray.push("")
}

または、 Array.prototype.fill()

var myArray = Array(3).fill("");

.fill()エレガントなワンライナーソリューションです。ありがとう!
colefner

15

2018年以降は[...Array(500)]、そのために使用します。


1
未来へ!
リーバイス

陽気なことに、これ(および同様のもの)は、単によりも50%遅くなります(() => { let n = []; for(var i=0;i<500;i++){y.push("");} return n; })()
アレックス

数千万の要素を含む配列の束を作成する場合は、それを検討する必要があるかもしれませんが、ほとんどの場合、数ナノ秒では読みやすさを向上させる価値はありません。 。
JaredMcAteer

10

ES5以降(この回答が出されたとき):

undefined要素の空の配列が必要な場合は、次のようにすることができます。

var whatever = new Array(5);

これはあなたに与えるでしょう

[undefined, undefined, undefined, undefined, undefined]

空の文字列で埋めたい場合は、次のようにします。

whatever.fill('');

それはあなたに与えるだろう

["", "", "", "", ""]

そして、あなたがそれを一行でやりたいのなら:

var whatever = Array(5).fill('');

2
new Array(2)は、[undefined、undefined]を提供しません。それはあなたに反復不可能な配列を与えます。
JCF

OK。私にはわからないことが起こっています。で新しい配列を作成していますnew Array(2)が、返されるのはではあり[ <2 empty items> ]ません[undefined, undefined].map前者で使用しても効果はありません。ただし、for...ofループを使用して反復することはできます。リテラル表記を使用して新しい配列を作成すると、a = [undefined, undefined]それを使用できます.map
JCF

1
@JCF for ... ofはイテレータプロトコルを使用するため、forEach / mapとは動作が異なります。イテレータ緩い空虚情報
トマシュBłachut

@TomaszBłachut@ JCF反対票を投じた人は、この回答が4年以上前に出されたことを覚えておいてください。当時、この回答は100%有効でした。ES6とES7は、それぞれ2016年半ばと2018年半ばまでブラウザへの展開を開始しませんでした。この回答の時点では、JSバージョンはES5でした。これES5の動作方法であることをさらに証明する必要ある場合は、Chromeの古いインスタンスを起動して(この回答の時点ではv48でした)、実行しArray(5)ます。次の出力が表示されます[undefined x 5]
jeffdill 23

@ jeffdill2回答自体に新しい情報を追加するのが最善です。コメントは必ずしも完全に読まれているわけではありません。
ボアズ

4

この構文を使用できるように、いくつかの値を使用して匿名配列を作成する場合。

var arr = new Array(50).fill().map((d,i)=>++i)
console.log(arr)


0

javascriptメソッドrepeat()とsplit()の両方を一緒に使用できます。

" ".repeat(10).split(" ")

このコードは、10個のアイテムを含む配列を作成し、各アイテムは空の文字列です。

const items = " ".repeat(10).split(" ")

document.getElementById("context").innerHTML = items.map((item, index) => index)

console.log("items: ", items)
<pre id="context">

</pre>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.