querySelectorAllで取得した要素をfilterでフィルタリングしたい

公開日時

puppeteerでhtmlの解析を行う際に、querySelectorAllである要素をすべて取得したあとフィルタリングしたいことがある。

const someClassSelector = document.querySelectorAll('.someClass');
const filteredSomeClassSelector = someClassSelector.filter((s) => {
  return s.textContent === "someText";
});

最初、上記のようなコードを書いていたが[[filter is not a function]]エラーが発生。

Uncaught TypeError: someClassSelector.filter is not a function

Array.fromを使ってNodeListオブジェクトを配列に変換することでfilterを使ったフィルタリングができるようになった。

const someClassSelector = document.querySelectorAll('.someClass');
const filteredSomeClassSelector = Array.from(someClassSelector).filter((s) => {
  return s.textContent === "someText";
});

参考


Related #js