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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

12371閲覧

map関数の中のif-elseの処理が通りません

caveatld

総合スコア17

JavaScript

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/06/21 14:34

前提・実現したいこと

JavaScript初心者です。以下の様な配列に対し,map関数を利用して特定の値を持つ場合のみ,if文を用いて別の処理を実行したいと考えております。

JS

1var things = [ 2 {a: 1, b: 2, c: true}, 3 {a: 2, b: 100, c: false}, 4 {a: 3, b: 200, c: true} 5 ];

最終的には,以下の様なaが1の場合にみwidthを追加した出力をしたいと考えております。

Array [Object { label: "a", key: "a", width: 150 }, Object { label: "b", key: "b"}, Object { label: "c", key: "c"}]

発生している問題・エラーメッセージ

Error: Unexpected token 'if'

下のソースコードに問題があるのですが,if文が認識されません。

該当のソースコード

JS

1var tempCol1 = Object.keys(things[0]).map(x=>( 2 if ( x === 1 ){ 3 return {label:x, key:x, width: 150}; 4 } 5 else { 6 return {label:x, key:x}; 7 } 8));

試したこと

以下の処理であれば,一括して同じ処理が実行される事が確認できたのですが,mapの中にif文がうまく反映できませんでした。

JS

1var tempCol = Object.keys(things[0]).map(x=>({label:x, key:x, width: 150}));

基本的な事だとは思うのですが,ご指摘頂けますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

アロー関数の中身は中括弧で括ってください。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions

javascript

1var tempCol1 = Object.keys(things[0]).map(x => { 2 ... 3});

単純に return するだけの場合は中括弧と return が省略できます。そのため、

javascript

1var tempCol = Object.keys(things[0]).map(x=>({label:x, key:x, width: 150}));

は、

javascript

1var tempCol = Object.keys(things[0]).map(x => { 2 return ({label:x, key:x, width: 150}) 3});

と等価になります。

投稿2021/06/21 14:54

yh1224

総合スコア653

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

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

caveatld

2021/06/21 15:30

迅速なご回答誠にありがとうございました!大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問