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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

438閲覧

TypeScriptでの文法(配列でmap()filter()を同時に行う)について

bobo

総合スコア48

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

1グッド

1クリップ

投稿2023/10/16 09:37

実現したいこと

  • 同一ロジックを一回しか使わない様にしたい。

前提

Vue.js+Nuxtでフロントエンドのシステムを作っています。
特にエラーとなっているわけではなく、動作も期待した通りに動いています。

ただ、同一ロジックを2か所使用しており、文法的にもっと綺麗に書けるかの質問になります。
map()関数で①の条件をundefinedで返せればすっきりすると思うのですが難しいでしょうか?

アドバイス頂ければ有難いです。

該当のソースコード

TypeScript

1const { $isEmpty } = useNuxtApp(); 2 3// 表示一覧取得 4const items = computed(() => { 5 return store.list1 6 .filter((row) => { 7 // ①値が空で無い 8 const item = store.list2.find(({ cd }) => cd === row.cd); 9 return !$isEmpty.isEmpty(item.disp); 10 }) 11 .map((row, index) => { 12 // ②cdで一致したデータから表示要素を取得する 13 const item = store.list2.find(({ cd }) => cd === row.cd); 14 return { 15 title: `${item.title}${index + 1}: ${item.disp}`, 16 data: item.data, 17 }; 18 }); 19}); 20

試したこと

重複してる下記ロジックを一つにしようとしている。
const item = store.list2.find(({ cd }) => cd === row.cd);

補足情報(FW/ツールのバージョンなど)

VSCodeで確認してます。

takanaweb5👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

flatMapを使う(結果配列から除外したいものの場合は空配列を返す)ことで、mapとfilterを一気に片付けることができます。

投稿2023/10/16 09:51

maisumakun

総合スコア146544

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問