質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1083閲覧

JavaScriptで二次元配列の要素を指定して、連想配列(オブジェクトの配列)に変換したい

ttttttt

総合スコア3

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/03/13 12:22

JavaScriptで二次元配列の要素を指定して、連想配列(オブジェクトの配列)に変換したいです。(表現が正しくなかったらすいません。)自分で作成してみたのですが、もっと良い方法がありそう&使いまわしがきかないように感じました。ド素人で恐縮ですが、アドバイスをいただけると嬉しいです。

  • やりたいこと

JavaScript

1//変換する二次元配列 オブジェクトの要素数と並び順は固定 2let array = [ 3        ["りんご",10,"甘い"], 4        ["みかん",20,"酸っぱい"], 5        ["バナナ",10,"甘い"] 6       ]; 7//ほしい結果(連想配列) 「1,2番目の要素のみ」など要素を指定して取得するイメージ 8let list = [ 9 {fruit : "りんご", taste : "甘い"}, 10 {fruit : "みかん", taste : "酸っぱい"}, 11 {fruit : "バナナ", taste : "甘い"} 12 ];
  • やってみたこと

JavaScript

1//結果の変数 2let list = []; 3//オブジェクトの変数 4let obj = {}; 5//要素の変数 6let elem = ""; 7 8for(let i = 0; i < array.length; i++){ 9 //初期化 10 obj = {}; 11 for(let j = 0; j < 3; j++){ 12 //初期化 13 elem = ""; 14 //二次元配列の要素を取得 15 elem = array[i][j]; 16 //1つ目の要素の場合 17 if(j === 0){ 18 obj.fruit = elem; 19 //3つ目の要素の場合 20 }else if(j == 2){ 21 obj.taste = elem; 22 //それ以外 23 }else{ 24 //何もしない 25 } 26 } 27 list.push(obj); 28} 29console.log(list);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2022/03/13 22:52

一行で書けます。 let list = array.map(([fruit, _, taste]) => ({ fruit, taste }));
ttttttt

2022/03/14 10:51

勉強になります!ありがとうございました!
babu_babu_baboo

2022/03/14 11:12

「使いまわし」が効くならなにより。w
guest

回答2

0

ベストアンサー

javascript

1let array = [ 2["りんご",10,"甘い"], 3["みかん",20,"酸っぱい"], 4["バナナ",10,"甘い"] 5]; 6 7let list = []; 8for ([fruit,b,taste] of array) { 9 list.push({fruit,taste}); 10} 11console.log(list);

--- 追記 ---
既存のコードによせるなら

javascript

1let list = []; 2for (let i = 0; i < array.length; i++) { 3 list.push({'fruit':array[i][0],'taste':array[i][2]}); 4} 5console.log(list);

--- 追記 ---
もう少しよせるなら

javascript

1let list = []; 2let obj; 3for (let i = 0; i < array.length; i++) { 4 obj = {}; 5 obj.fruit = array[i][0]; 6 obj.taste = array[i][2]; 7 list.push(obj); 8} 9console.log(list);

投稿2022/03/13 13:01

編集2022/03/13 14:10
takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttttttt

2022/03/14 10:53

数パターンもご回答いただきありがとうございました! 勉強になります!!!
guest

0

js

1class A { 2 constructor (a, b, c) { 3 this.fruit = a; 4 this.taste = c; 5 } 6} 7 8const array = [ 9 ["りんご",10,"甘い"], 10 ["みかん",20,"酸っぱい"], 11 ["バナナ",10,"甘い"] 12]; 13 14const list = array.map (a=> new A (...a)); 15 16console.log (list);

投稿2022/03/13 12:44

babu_babu_baboo

総合スコア616

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttttttt

2022/03/14 10:54

ご回答ありがとうございました! コンストラクターの使い方も確認してみますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問