メソッドを短く説明
- ループ
- 追加・削除
- 取り出し
- slice : 指定範囲の要素からなる配列を返します。(MDN)
- 探索
- 条件
- 置換
- 平坦化
- 文字列化
- イテレーション
- 順序変更
- 単一化
サンプルコード
forEach
以下ではHTML要素に変更を加えます。関数内で完結するので、返り値を得る必要はありません。
const elems = document.querySelectorAll('.data_table td:first-child');[...elems].forEach((elem, i) => elem.textContent = i);
map
以下では記事一覧のデータから、記事名を取り出して配列にします。
const titles = posts.map(post => post.title);
indexOf
以下では単語の重複を除去します。new Set
が使えないブラウザでも動作します。
const words = allWords.filter((cat, i, arr) => arr.indexOf(cat) === i);
findIndex
以下では、ある記事IDが何番目の記事のIDなのかを調べます。Gatsbyなどで使われやすいです。
const postIndex = posts.findIndex(post => post.slug);
filter
以下では行数カウンタを作るために、textarea要素から取得した複数行のテキストを、行ごとに配列の要素にして空行は除去します。
const inputElem = document.querySelector('.input__text__multi_line');const contentEachLine = inputElem.value.split('\n');const vaildLineCount = contentEachLine.filter(Boolean).length;
splice + concat + copyWithin
以下では、月初から月末までの曜日を配列にします。
const weekday = ['日', '月', '火', '水', '木', '金', '土'];const nowDate = new Date(); // 2020-12-18const firstWeekday = new Date(nowDate.setDate(0)).getDay();const monthCount = new Date(nowDate.getFullYear(), nowDate.getMonth() + 2, 0).getDate(); // 31const weekdayShift = weekday.splice(firstWeekday + 1).concat(weekday);const monthWeekday = weekdayShift.concat(Array(monthCount - 7));for (let day = 0; day < monthCount; day += 7) { monthWeekday.copyWithin(day, 0, 7);}// monthWeekday = ['火', '水', '木', '金', '土', '日', '月', '火', '水', '木', '金', '土', '日', '月', '火', '水', '木', '金', '土', '日', '月', '火', '水', '木', '金', '土', '日', '月', '火', '水', '木']
splice()
がポイントで、配列の指定インデックス以降を取り除いた配列に変更しつつ、取り除かれた要素からなる配列が次のconcat()
に繋がり、後ろに連結されます。前にあった要素を後ろに並べているのです。
entries
以下では、デバッグのためにログに出力します。
// token = ['<', 'p', '>', 'title', '<', '/', 'p', '>']for (const [key, value] of token.entries()) { console.log(`${key}番目はの値は${value}です`);}
reduce
以下では表から数字を取得して、その平均値を求めます。
const dataElems = document.querySelectorAll('.data_table td:nth-child(3)');const nums = [...dataElems].map(elem => +elem.textContent).filter(Number.isFinite);const average = nums.reduce((leftVal, rightVal) => leftVal + rightVal) / nums.length;
参考リンク