0

さて、ずっと使っていた

var j= {};
j['field'] = value;

どうやら以下も動作します

var j= [];
j['field'] = value;

違いはありますか?

編集:申し訳ありませんが、オブジェクトの代わりに間違った単語 json を使用したと思います。私の悪い。しかし、私の質問は立つまでです。ほとんどの人は、私がよく知っている配列とオブジェクトの違いを説明しています。

私はいつも var x = []; をします。x.push('blah') など

var x = {}; も行います。x.Name = 'マイケル'; x.Age = 21 など

私が見て驚いたのは、var x = []; のようなコードを見たということです。x.name = 'マイケル';

これは私が慣れていなかったため、質問を投稿しました。

すべての答えをありがとう。私は自分の質問に最もよく対処した承認済みの回答をマークしました

4

7 に答える 7

9

オブジェクトは「JSON」ではなく、(空の)オブジェクトと配列リテラルです。JSON は、 のような値を渡すことによって得られるシリアル化された形式JSON.stringifyです。

JSON に変換しようとすると、有効な JavaScript であっても、後者は機能しません。

var json = [];             // ok, it's an array
json["field"] = "value";   // still OK - arrays can have properties too
JSON.stringify(json);
> "[]"

つまり、空の配列を取得するだけです。これは、配列をシリアル化しようとすると、からまでの数値インデックスプロパティのみが取得され、名前付きプロパティは取得されないためです。0myArray.length - 1

于 2013-06-04T15:42:14.323 に答える
3

[] は配列初期化子です

{} はオブジェクト初期化子です

于 2013-06-04T15:39:13.683 に答える
3
  • []長さゼロの配列リテラルです。

  • {}空のオブジェクト リテラルです。

于 2013-06-04T15:39:27.523 に答える
1

[]は配列で、{}リテラル オブジェクトです。

どちらも JavaScript プリミティブ オブジェクトであるため、両方を行うことができます。

配列で行う場合、配列オブジェクトにプロパティを設定していて、項目を追加していません。
リテラルオブジェクトでそれを行うと...まあ、上で述べたように、そのオブジェクトにプロパティを設定しています。

于 2013-06-04T15:42:28.843 に答える
1

違いはありません。

どちらの場合も、オブジェクトにプロパティを設定しています。2 番目のオブジェクトが配列であることだけです。

つまり、後者の例では、前の例で使用したのと同じ手法を効果的に使用します。つまり、オブジェクトにプロパティを設定しています。この場合は配列です。しかし、配列の内容を変更していません。

于 2013-06-04T15:43:18.150 に答える
1

以下はJavaScriptオブジェクトです。

var json = {};
json['field'] = value; //Valid

以下はJavaScript配列です。

var json = [];
//Below does not set the value in array instead it sets a property name field.
//json['field'] = value; 
json.push(value);      //proper way to add an element to an array

どちらも Javascript オブジェクトであり、JSON とはまだ関係ありません。

JSON は記法であり、簡単なデータ通信のためにさまざまな言語で従う規則です。基本的に、上記は、異なる言語で読み取ることができる JSON 規則に従って文字列リテラルに変換されます。

2つの方法があり、

  1. JSON.stringify- 上記を JSON 表記に従って文字列リテラルに変換します。
  2. JSON.parse - JSON 文字列リテラルを有効な JavaScript オブジェクトに変換します。

ほとんどの言語で同じ関数がライブラリとして利用できるため、異なる言語間で簡単に通信できます。

于 2013-06-04T15:43:33.063 に答える
1

[]Arrayインスタンス (特定の追加のプロパティ/メソッドを持つオブジェクト インスタンス)、インスタンスを{}作成しObjectます。

を使用して作成されたものには、などのプロトタイプの[]メソッドがありますが、2 番目のものにはありません。Arraypush()slice()

于 2013-06-04T15:40:45.113 に答える