title.rb
// ハイライト用関数
function highlight(text, keywords) {
if (!keywords || keywords.length === 0) return text;
// キーワードを正規表現に変換して置換
const re = new RegExp("(" + keywords.map(k => escapeRegExp(k)).join("|") + ")", "gi");
return text.replace(re, "<em>$1</em>");
}
// 正規表現用エスケープ
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
// 例:キーワード
const keywords = ["雨", "曇り"];
// field の中の一つを探して処理
const target = field.find(obj => Object.values(obj)[0].id === "3");
// id=3 の { list3: { id: "3", data: "曇り" } } が取れる
if (target) {
const value = Object.values(target)[0].data; // "曇り"
const highlighted = highlight(value, keywords);
console.log(highlighted);
// → <em>曇り</em>
}