【JavaScript】記事一覧から「指定カテゴリのいずれかを含む」で絞り込む方法
2023/1/17
2023/1/17
カテゴリデータを持つ記事一覧を、指定カテゴリ(リスト)の中のどれかを含む記事で絞り込みたいという場合の処理の方法メモです。
カテゴリデータが⑴連想配列のリストの場合と⑵リストの場合、⑶カンマ区切りの文字列の場合の3つのパターンを紹介していきます。
目次
記事一覧データ1(カテゴリが連想配列のリストの場合)
const articles = [
{
title: "記事1",
content: "記事1の内容",
categories: [
{name: "カテゴリ1", description: "カテゴリ1についての説明"},
]
},
{
title: "記事2",
content: "記事2の内容",
categories: [
{name: "カテゴリ2", description: "カテゴリ2についての説明"},
{name: "カテゴリ4", description: "カテゴリ4についての説明"},
]
},
{
title: "記事3",
content: "記事3の内容",
categories: [
{name: "カテゴリ1", description: "カテゴリ1についての説明"},
{name: "カテゴリ3", description: "カテゴリ3についての説明"}
]
}
];
categories
にカテゴリデータの連想配列のリストが指定されている。
取得したいカテゴリのリストで絞り込み
"カテゴリ1"
と"カテゴリ3"
を持つデータを取得したい。
const categories = ["カテゴリ1", "カテゴリ3"];
const filteredArticles = articles.filter(article =>
article.categories.some(c => categories.includes(c.name))
);
console.log(filteredArticles
// [
// { title: '記事1', content: '記事1の内容', categories: [ [Object] ] },
// { title: '記事3', content: '記事3の内容', categories: [ [Object], [Object] ] }
// ]
記事一覧データ2(カテゴリがリストの場合)
const articles = [
{
title: "記事1",
content: "記事1の内容",
categories: ["カテゴリ1"]
},
{
title: "記事2",
content: "記事2の内容",
categories: ["カテゴリ2", "カテゴリ4"]
},
{
title: "記事3",
content: "記事3の内容",
categories: ["カテゴリ1", "カテゴリ3"]
}
];
categories
にカテゴリデータの配列(リスト)が指定されている。
取得したいカテゴリのリストで絞り込み
"カテゴリ1"
と"カテゴリ3"
を持つデータを取得したい。
const categories = ["カテゴリ1", "カテゴリ3"];
const filteredArticles = articles.filter(article =>
article.categories.some(c => categories.includes(c))
);
console.log(filteredArticles
// [
// { title: '記事1', content: '記事1の内容', categories: [ [Object] ] },
// { title: '記事3', content: '記事3の内容', categories: [ [Object], [Object] ] }
// ]
記事一覧データ3(カテゴリがカンマ区切りの文字列の場合)
const articles = [
{
title: "記事1",
content: "記事1の内容",
categories: "カテゴリ1"
},
{
title: "記事2",
content: "記事2の内容",
categories: "カテゴリ2, カテゴリ4"
},
{
title: "記事3",
content: "記事3の内容",
categories: "カテゴリ1, カテゴリ3"
}
];
caterogies
に「複数のカテゴリ名がカンマ区切り」で指定されている。
取得したいカテゴリのリストで絞り込み
"カテゴリ1"
と"カテゴリ3"
を持つデータを取得したい。
const categories = ["カテゴリ1", "カテゴリ3"];
const filteredArticles = articles.filter(article =>
categories.some(c => article.categories.split(',').map(s => s.trim()).includes(c))
);
console.log(filteredArticles
// [
// { title: '記事1', content: '記事1の内容', categories: [ [Object] ] },
// { title: '記事3', content: '記事3の内容', categories: [ [Object], [Object] ] }
// ]
最近の記事
音楽生成AI「Suno」の使い方まとめ!作詞作曲が簡単にできる?
簡単に曲が作れるAIということでよく聞く「Suno(Chirp)」についてまとめました。
目次「Suno」とはテキストからさまざまな音声を生成する「Bark」歌詞から曲を生成する「Chirp」...
2023/11/24
2023/11/24
【Open AI】APIの料金まとめ|GPT・DALL·E・Whisperなど
Open AIのAPI(一部)の料金をまとめました。
参考のために日本円は「1ドル150円」で換算をしています。
目次Text generation: テキスト生成Assistants ...
2023/11/22
2023/11/22
【Next.js】Assistants APIの基本的なコードまとめ。
Open AIの「Assistants API」をNext.jsで使用する時の基本的なコードをまとめました。
目次Open AIのAPIセットアップ基本の使い方Threads: スレッドを作る...
2023/11/21
2023/11/21
【Next.js】Open AIのAPIでファイルをアップロードする方法。
今回は、Next.jsサイトからOpen AIのAPI(Upload file)で、ファイルをアップロードする方法を実装するのに時間がかかったのでその過程と最終コードをまとめます。(Vercelにデ...
2023/11/21
2023/11/22
「生成系AIのWEBプロダクトTOP50」をまとめてみる。
Andreessen Horowitzが出している記事で紹介されている「AIプロダクトの月間訪問者数ランキングTOP50」のサービスをまとめました。
目次ChatGPTcharacter.ai...
2023/10/3
2023/10/3
【Next.js 13】NextAuth+FireStoreにユーザー情報を保存する。
今回は、以下の3つをNext.js 13で実装するためのメモです。
Googleアカウントでログインできる
アカウント、セッション情報をFirestoreに保存する
サーバーサイ...
2023/7/12
2023/7/12