部分一致検索

オブジェクトの配列があり、そのオブジェクトの中身で部分一致検索を作成した。

その時のメモ。

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で書いていることもあり、もう少し記述量が多いのでもう少しきれいにしたい。






この記事が気に入ったらサポートをしてみませんか?