2012-03-09 16 views
3

自分自身で、各動的キーを一度に1行ずつ指定する必要があります。javascriptオブジェクトに複数の動的キー名を追加する簡略な方法

私は既存のオブジェクトに追加のキーを追加するために、今やっていることは:簡単な方法は、

jQuery.extend({('title_' + id) : field_data[0], ('field_' + id) : field_data[1]}); 

ですが:

create_request[('title_' + id)] = field_data[0]; 
create_request[('field_' + id)] = field_data[1]; 

私は何をすることができるように期待していたことのようなものがあります私が今やっていることよりも(私が働くことを望んでいたからではない)それとも、これは言語の単なる制限ですか?

わかりましたので、あなたは次のようにJavaScriptでオブジェクトを作成することができます:

明確にするための編集

{ 
a : 1 
} 

しかし、それは、キーの文字列値であることを前提としています。キーを変数の値にしたい場合はどうすればよいですか?

私が行うことができます:

the_object[variable] = 1 

しかし、私は、オブジェクトにこれらの動的挿入の以上のいずれかを実行したい場合は?それを行う便利な方法はありますか?

+0

http://stackoverflow.com/questions/ 171251/how-can-i-merge-properties-of-two-javascript-objects-dynamicallyダイナミックではありませんが、必要な行に沿っています。 'create_request'オブジェクトと、その中のすべてのフィールドを持つ新しいオブジェクトを使用して、それらを一緒にマージすることができます。 – Brad

+0

@ブラッド、おそらく私は明確ではなかったが、その質問は全く似ていない。私はあなたが2つのオブジェクトを一緒にマージできることを知っています(私はたとえjqueryの例を使っています)。 – GoldenNewby

+0

@Brad、あなたの編集に応じて:私はそれがどのように簡略化された解決策であるかわかりません。 – GoldenNewby

答えて

3

JavaScriptについて1つだけ変えることができるのであれば、オブジェクトのリテラル構文になります。私は、プロパティ名はプロパティ値と同じ式として評価されるべきだと思います。私は、静的な名前を使用するときに、引用されたプロパティ名を含むことを余儀なくされるという迷惑になると考えています。しかし、願いが魚だったら...

動的な名前でプロパティを設定する唯一の組み込み方法は、正方形ブラケット表記を使用することですが、入力を非常に似た独自の関数を作成するのは難しくありません。構文あなたが使用することを望んだ:

extendObject(obj, props) { 
    for (var i = 0; i < props.length; i+=2) 
     obj[props[i]] = props[i+1]; 
} 

extendObject(create_request, ['title_' + id, field_data[0], 'field_' + id, field_data[1]]); 

新しいプロパティ名を保持するために配列ではなく、プレーンなオブジェクトを使用することにより、あなたはダイナミックな名前を使用することができます値。

(注もあっても、あなたの問題の角括弧構文であなたはそれが冗長な括弧を含めることによって、必要以上に、それは少し複雑作りました。)

+1

あなたは私と一緒に今夜二人です。私はあなたが私が言っていることを理解している唯一の人かもしれないと思います:P – GoldenNewby

関連する問題