元になるオブジェクトの配列→[{...}, {...}, {...}] それぞれのオブジェクト ↓ {name: 'test', value: '1'} {name: 'sample', value: '2'} {name: sample', value: '3'}
上記のようなオブジェクトの配列があったときに、これを一つのオブジェクトにまとめたいです。
JavaScript
1var param = 上記の例の配列; 2var obj = {}; 3 4$.map(param, function(n, i){ 5 obj[n['name']] = n['value']; 6});
としたところ、sampleというキーの値が最後に追加された値になってしまいます。これをもとのデータにあったように、同じキーの値をすべて保持することはできないでしょうか。
{test: '1', sample: '2', sample'3'}
上記のように一つのオブジェクトで複数の同一のキーを持つようにしたいです。
上記のようなオブジェクトがJavaScriptの仕様上作成できない場合は、
{test: '1', sample: '2, 3'} or {test: '2', sample: [2, 3]}
のように、同一のキーの値をまとめてしまってもいいかと思っております。ご教示賜れますと幸いです。よろしくお願いいたします。
> 同一のキーの値をまとめてしまってもいいかと思っております。
こちらについて、コードは検討してみましたでしょうか。
(キーの重複は不可能です)
そうなのですね、、、。では配列か何かで一つのキーに複数の値を持たせることになるのですね。
$.map(param, function(n, i){
if (obj[n['name']] == 'sample'){
obj[n['name']].obj[n['name']].push(obj[n['value']]);
}
});
とりあえず同一キーの配列になれば、と思い、上記のようにしてみたのですが、特にエラーなどは出ずにまた配列にもならず最初と同じように最後の値だけが渡されている状況です。。。

回答3件
あなたの回答
tips
プレビュー