71

次のようなipsでいっぱいのjsonオブジェクトがあります

var ips = {}

次に、このオブジェクトに ip オブジェクトを次のように追加します

ips[ipID] = {}

次に、動的/変数名と値のペアを各 IP に追加する必要があるため、このようなコードを使用しています

var name; var value; var temp = {};
tmp[name] = value

私の質問は、これらの名前と値のペア/ tmp を ipID オブジェクトに追加して、結果が次のようになるようにするにはどうすればよいかということです

ipID = { name : value, anotherName : anotherValue }
4

8 に答える 8

205

それはJSONではありません。これは単なる Javascript オブジェクトであり、JSON とはまったく関係ありません。

括弧を使用して、プロパティを動的に設定できます。例:

var obj = {};
obj['name'] = value;
obj['anotherName'] = anotherValue;

これは、次のようなオブジェクト リテラルでオブジェクトを作成するのとまったく同じになります。

var obj = { name : value, anotherName : anotherValue };

オブジェクトを既にipsコレクションに追加している場合は、1 組のブラケットを使用してコレクション内のオブジェクトにアクセスし、別のペアを使用してオブジェクト内のプロパティにアクセスします。

ips[ipId] = {};
ips[ipId]['name'] = value;
ips[ipId]['anotherName'] = anotherValue;

ips[ipId]上記のコードと類似していることに注意してください。ただし、代わりに を使用しているだけですobj

コレクションからオブジェクトへの参照を取得し、それを使用して、コレクション内に残っているオブジェクトにアクセスすることもできます。

ips[ipId] = {};
var obj = ips[ipId];
obj['name'] = value;
obj['anotherName'] = anotherValue;

文字列変数を使用して、プロパティの名前を指定できます。

var name = 'name';
obj[name] = value;
name = 'anotherName';
obj[name] = anotherValue;

プロパティを識別するのは変数の値 (文字列) であるため、obj[name]上記のコードで両方のプロパティを使用していますが、アクセスするプロパティを決定するのは、変数にアクセスする瞬間の変数の文字列です。

于 2010-11-01T17:50:12.153 に答える
8

JavaScriptオブジェクトを使用する場合、「ドット表記」を使用してアイテムを追加することもできます(JSLintが好む

var myArray = { name : "john" };
//will initiate a key-value array with one item "name" and the value "john"
myArray.lastName = "smith";
//will add a key named lastName with the value "smith"
//Object {name: "john", lastName: "smith"}

これは、Chrome コンソールでのテストのスクリーンショットです。

スクリーンショット

于 2015-03-11T17:09:14.977 に答える
5

「ips」の各エントリには複数の名前と値のペアを含めることができると想定しているため、ネストされています。このデータ構造を次のように実現できます。

var ips = {}

function addIpId(ipID, name, value) {
    if (!ips[ipID]) ip[ipID] = {};
    var entries = ip[ipID];
    // you could add a check to ensure the name-value par's not already defined here
    var entries[name] = value;
}
于 2010-11-01T17:49:46.493 に答える
3

Javascriptで。

    var myObject = { "name" : "john" };
    // { "name" : "john" };
    myObject.gender = "male";
    // { "name" : "john", "gender":"male"};
于 2016-06-17T06:52:16.903 に答える