部分一致検索
オブジェクトの配列があり、そのオブジェクトの中身で部分一致検索を作成した。
その時のメモ。
typescriptで書くとアサーションが必要な可能性がありますが、一旦は以下のコードでオブジェクトの配列の中身で部分一致検索が可能でした。
※ 「オブジェクトの中にオブジェクトが無いこと」など前提条件はありそうです。
// オブジェクトをなくす
const bar = (obj) => {
const values = Object.values(obj);
return values.reduce((acc, el) => {
if (el !== null && typeof el === 'object') {
const array = Object.values(el);
return [...acc, ...array];
}
return [...acc, el];
}, []);
};
// 部分一致
const hoge = (obj, searchWord) => {
const flat = flatObject(obj);
return flat.some((el) => {
return el.indexOf(searchWord) !== -1;
});
};
// メイン関数
const search = (objectArray, e) => {
const filteredStudents = objectArray.filter((i) => {
return isMatchSearchWords(i, e.target.value);
});
setDisplayStudents(filteredStudents);
};
実際はtsで書いていることもあり、もう少し記述量が多いのでもう少しきれいにしたい。