質問

間に違いはありますか:

 var samples = {
        "TB10152254-001": {
            folderno: "TB10152254",
            ordno: "001",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        },
        "TB10152254-002": {
            folderno: "TB10152254",
            ordno: "002",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        },

        "TB10152254-003": {
            folderno: "TB10152254",
            ordno: "003",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        }
    };

 var samples = new Array();
samples["TB10152254-001"]  = {
            folderno: "TB10152254",
            ordno: "001",
            startfootage: "",
            endfootage: "",
            tagout: "Y"};

samples["TB10152254-002"] = {
            folderno: "TB10152254",
            ordno: "002",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        };

samples["TB10152254-003"] =  {
            folderno: "TB10152254",
            ordno: "003",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        };

編集:

質問を再編成します:ハッシュを動的に埋めるにはどうすればよいですか?私はsamples.tb10152254-003のようなことはできません。なぜなら、i tb10152254-003は動的だからです...それで、それは可能ですか?

役に立ちましたか?

解決

配列はオブジェクトの一種であるため、両方とも機能します。しかし、この方法で配列を使用することには利点はありません。 for/in.

オブジェクトは、名前付きプロパティに使用する適切なタイプです。インデックスプロパティのみの配列の使用のみを予約してください。


編集に関しては、スクエアブラケット表記を使用して、アレイと同じ方法でオブジェクトを動的に設定できます。

   // Create a new empty object. You an use "new Object()" if you wish
var samples = {};

  // Populate the "samples" object in the same way you would an Array.
samples["TB10152254-001"]  = {
            folderno: "TB10152254",
            ordno: "001",
            startfootage: "",
            endfootage: "",
            tagout: "Y"};

samples["TB10152254-002"] = {
            folderno: "TB10152254",
            ordno: "002",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        };

samples["TB10152254-003"] =  {
            folderno: "TB10152254",
            ordno: "003",
            startfootage: "",
            endfootage: "",
            tagout: "Y"
        };

他のヒント

はい。 2番目の例では、あなたは Array Aとしても Object. 。これをしないでください。

使用する Arrays数値インデックスされた値のみおよびプレーンの場合 Objects ちょっとしたハッシュテーブルの場合。

詳細をお読みください ArraysObjects.

JavaScriptでは、基本的にすべてがオブジェクトです。また、配列。しかし Array オブジェクトは、数値インデックスデータを扱うための追加の方法を提供します。

あなたはおそらくあなたがするときに最高の違いを見ることができます samples.length 2番目の例で。プレーンオブジェクトにはプロパティがありません length, 、アレイはそうします。配列の場合、配列に保存されている要素の数がわかります。今あなたが電話するとき samples.length 2番目の例では、取得します 0 アレイには実際には要素がないためです。

より混乱する可能性のあるのは、オブジェクトのプロパティにアクセスする2つの可能性があるという事実です。「ドット表記」、 object.property そして、「配列表記」、 object['property']. 。しかし、これは配列ではなくオブジェクトの機能です。

キーを生成したり、変数にプロパティ名を保存したりすると、アレイ表記が役立ちます。

アップデート:

書かれているように、配列表記を利用して、プロパティを動的に作成できます。

var samples = {};

for(var i = 0; i < 4; i++) {
    samples["TB10152254-" + i] = {
        folderno: "TB10152254",
        ordno: i,
        startfootage: "",
        endfootage: "",
        tagout: "Y"
    }
}

プロパティにアクセスしたい場合は、 for...in キーを繰り返すループ:

for(var key in samples) {
    var value = samples[key];
}

しかし、注:決して使用しないでください for...in 配列の上にループします。私がリンクしたページには、その理由も書かれています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top