LoginSignup
0
0

More than 3 years have passed since last update.

【Javascript】for of ー 学習ノート

Posted at

初めに

ES6に導入されたfor of文について学習した内容のoutput用記事です。

※内容に間違いなどがある場合はご指摘をよろしくお願いします。
※こちらの記事はあくまでも個人で学習した内容のoutputとしての記事になります。

前回の関連記事:
https://qiita.com/redrabbit1104/items/40f3e2aa6cd4361150ee
https://qiita.com/redrabbit1104/items/374fc9cc0c0408f51e66

for of文の練習

まず、bagsというobjectを用意します。

"use strict";

const bags = {
  fruits: ["apple", "orange", "grape", "mango", "banana"],
  stationery: ["pencil", "eraser", "marker", "ruler", "ballpoint pen"],
};

スプレッド構文を使ってbagsのfruitsとstationeryプロパティーの中身をitemsに代入します。

const items = [...bags.fruits, ...bags.stationery];

コンソールで中身を確認してみます。

console.log(items);

配列という形でオブジェクトの中身を取得できました。
スクリーンショット 2021-05-28 7.17.13.png
itemsをfor of文を使って、配列の中身を出力してみます。itemの型はstringになっていることが分かります。

for (const item of items) {
  console.log(item, typeof item);
}

しかし、このままだとindexが表示されず、配列の中身だけ出力されてしまいます。この問題を解決するため、MDNの公式ドキュメントを参考にentriesメソッドを使ってみることに。

for (const item of items.entries()) {
  console.log(item);
}

entriesメソッドを使うと、itemsのindexとvalueという形で出力されました。
スクリーンショット 2021-05-28 7.30.39.png

entriesメソッドについて調べてみたいと思ったので、items.entriesをコンソルーで表示してみました。

console.log(items.entries());

配列の反復子(iterator)と出ました。
スクリーンショット 2021-05-28 7.37.40.png

配列であることが分かったので、スプレッド構文を使って展開してみます。

console.log([...items.entries()]);

items.entriesが一つの配列であり、その中にそれぞれのitemが配列の形でindexとvalueとして格納されていることが分かります。
スクリーンショット 2021-05-28 7.45.23.png

このそれぞれの配列の0番目にはindexが入っていて、1番目にはvalueが格納されているので、次のように0番目のindexに+1を足し、1から始まるようにし、1番目の中身を出力してみました。

for (const item of items.entries()) {
  console.log(`${item[0] + 1}: ${item[1]}`);
}

entriesの中身が1番から表示されました。
スクリーンショット 2021-05-28 7.57.37.png
このやり方は古いので、分割代入を使って書き替えてみました。menu.entries()が配列構造なので有効な方法です。

for (const [i, element] of items.entries()) {
    console.log(`${i + 1}: ${element}`);
  }

結果は先と同じです。
スクリーンショット 2021-05-28 7.57.37.png

これでentries()メソッドを使うと中身は添字と値が入っている配列であることが分かりました。

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0