Q&A
解決済
3回答
1684閲覧
総合スコア13
JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。
0グッド
1クリップ
投稿2016/02/20 15:12
0
1
Javascriptの配列
var list = [{a: 1}, {b: 2}, {c: 3}];
を
{a: 1, b: 2, c: 3}
にする簡単な方法はありますか?
keyの a, b, cはユニークであることが保証されている前提です。 初心者な質問で申し訳ありません。 (angularでアプリを書いているので、angularの関数とかでも大丈夫です)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答3件
ES 単体で実装するなら Object.assign(), Array.prototype.reduce が使えますね。
Object.assign()
Array.prototype.reduce
JavaScript1'use strict'; 2var list = [{a: 1}, {b: 2}, {c: 3}], 3 obj = list.reduce(function (prev, current) { return Object.assign(prev, current); }, {}); 4 5console.log(JSON.stringify(obj)); // {"a":1,"b":2,"c":3}
JavaScript
1'use strict'; 2var list = [{a: 1}, {b: 2}, {c: 3}], 3 obj = list.reduce(function (prev, current) { return Object.assign(prev, current); }, {}); 4 5console.log(JSON.stringify(obj)); // {"a":1,"b":2,"c":3}
(2016/02/21 01:57追記) Array.prototype.reduce は不要でしたね。
JavaScript1Object.assign.apply(null, list);
1Object.assign.apply(null, list);
Re: kenk さん
投稿2016/02/20 16:48
総合スコア18196
回答へのコメント
2016/02/20 16:58
angular って知らないのですが、ngyuki さんの回答を見て extend という関数は名前からして機能は想像できます。 素の javascript だと
javascript1var hash1 = (function(h,k){list.forEach(function(e){for(k in e){h[k]=e[k]}});return h})({}); 2var hash2 = (function(h,l,n,i,x,k){for(i=0;i<n;i++){x=l[i];for(k in x){h[k]=x[k];}};return h})({},list,list.length); 3```こんな感じですから、長くなっちゃいますね。
javascript
1var hash1 = (function(h,k){list.forEach(function(e){for(k in e){h[k]=e[k]}});return h})({}); 2var hash2 = (function(h,l,n,i,x,k){for(i=0;i<n;i++){x=l[i];for(k in x){h[k]=x[k];}};return h})({},list,list.length); 3```こんな感じですから、長くなっちゃいますね。
投稿2016/02/20 16:26
総合スコア2468
2016/02/20 16:39
ベストアンサー
js1angular.extend.apply(null, list);
js
1angular.extend.apply(null, list);
とかでどうでしょうか。
投稿2016/02/20 15:34
総合スコア4516
2016/02/20 16:38
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
Javascriptの配列操作について
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/20 16:58