48

私はJavaScriptを学んでいるところですが、配列を宣言する方法はいくつかあるようです。

  1. var myArray = new Array()
  2. var myArray = new Array(3)
  3. var myArray = ["apples", "bananas", "oranges"]
  4. var myArray = [3]

それらの違いは何ですか、そして好ましい方法は何ですか?

このウェブサイトによると、次の2行は大きく異なります。

var badArray = new Array(10); // creates an empty Array that's sized for 10 elements
var goodArray= [10];          // creates an Array with 10 as the first element

ご覧のとおり、これら2つの行は2つの非常に異なることを行います。複数のアイテムを追加したい場合は、badArrayが正しく初期化されます。これは、Javascriptが、追加する要素の数を指定する代わりに、配列を初期化していることを認識できるほど賢いためです。

著者が言おうとしているのはArray(10)、正確に10個の要素を[10]持つ配列を作成し、0番目の要素が10である未定義のサイズの配列を作成するということですか?または、これはどういう意味ですか?

4

5 に答える 5

28

最初の例では、を実行するのと同じように、空白の配列を作成していvar x = []ます。2番目の例では、サイズ3の配列(すべての要素を含むundefined)を作成します。3番目と4番目の例は同じで、どちらもこれらの要素を使用して配列を作成します。

を使用するときは注意してくださいnew Array()

var x = new Array(10); // array of size 10, all elements undefined
var y = new Array(10, 5); // array of size 2: [10, 5]

推奨される方法は、[]構文を使用することです。

var x = []; // array of size 0
var y = [10] // array of size 1: [1]

var z = []; // array of size 0
z[2] = 12;  // z is now size 3: [undefined, undefined, 12]
于 2012-07-09T21:06:06.550 に答える
18

推奨される方法は、常に角括弧付きのリテラル構文を使用することです。その動作は、とは異なり、任意の数のアイテムに対して予測可能ですArray。さらに、Arrayキーワードではなく、現実的な状況ではありませんが、誰かが簡単に上書きする可能性があります。

function Array() { return []; }

alert(Array(1, 2, 3)); // An empty alert box

ただし、より大きな問題は一貫性の問題です。コードをリファクタリングしている人がこの関数に出くわす可能性があります。

function fetchValue(n) {
    var arr = new Array(1, 2, 3);

    return arr[n];
}

結局のところ、必要なのはこれまでだけfetchValue(0)なので、プログラマーは他の要素を削除してコードを壊しますundefined

var arr = new Array(1);
于 2012-07-09T21:02:00.657 に答える
7

配列を作成する方法はいくつかあります。

配列を宣言して初期化する従来の方法は、次のようになります。

var a = new Array(5); // declare an array "a", of size 5
a = [0, 0, 0, 0, 0];  // initialize each of the array's elements to 0

または...

// declare and initialize an array in a single statement
var a = new Array(0, 0, 0, 0, 0); 
于 2013-07-15T21:46:33.683 に答える
7

それを宣言するには:

var myArr = ["apples", "oranges", "bananas"];

それを使用するには:

document.write("In my shopping basket I have " + myArr[0] + ", " + myArr[1] + ", and " + myArr[2]);
于 2018-04-21T18:28:01.883 に答える
0

各インデックスの値ではなく長さが主な機能である配列を作成する場合は、var a=Array(length);適切な配列を定義します。

例えば-

String.prototype.repeat= function(n){
    n= n || 1;
    return Array(n+1).join(this);
}
于 2012-07-09T23:11:05.413 に答える