for in vs for of


for in vs for of


くりかえし文


for in反復文は、オブジェクトのプロパティを繰り返して操作を実行し、すべてのオブジェクトに使用できます.
JavaScriptでは、オブジェクト属性に内部で使用される非表示属性があります.
1つは[Enumerable]で、for in構文はこの値をtrueに設定し、これらの属性を繰り返すしかありません.
これらのアトリビュートを列挙アトリビュートと呼び、オブジェクトのすべての組み込みメソッドやさまざまな組み込みプログラムなど、非列挙アトリビュートを繰り返しません.
プリファレンス・キー-値ペアのデータ(「key」プロパティ)では、特定の値を持つキーが存在するかどうかを確認できます.
for(variable in object) { ... }variable:繰り返しごとに異なる属性名を変数として指定します(variable)object:繰り返し操作を実行するための列挙属性を持つオブジェクト
let obj = {
    a: 1, 
    b: 2, 
    c: 3
};

for (let prop in obj) {
    console.log(prop, obj[prop]); // a 1, b 2, c 3
}
ここでfor ofを使うとどんな結果になりますか?

ご覧の通りTypeErrorです.
これは、for in反復文がオブジェクトのキー値にアクセスできるが、値にアクセスしないことを示します.

使用

var obj = {a: 1, b: 2, c: 3};
    
for (let prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`); // "obj.a = 1", "obj.b = 2", "obj.c = 3"
}

属性の削除、追加、変更

for..in文は、オブジェクトの属性を任意の順序で繰り返します.
属性を繰り返し変更した後にアクセスすると、繰り返し文の値は後の値として決定されます.アクセス前に削除されたプロパティには、後でアクセスしません.重複オブジェクトに追加されたプロパティにアクセスまたはスキップできます.
通常、これらのプロパティが現在アクセスされていない限り、重複操作中にオブジェクトのプロパティを追加、変更、または削除しないほうがいいです.追加する属性にアクセスするか、変更する属性(現在の属性を除く)が変更前または後にアクセスするか、属性を削除する前にアクセスするかは保証できません.

複文


for反復文は、繰り返し可能なオブジェクト(Array、Map、Set、String、TypedArray、Argumentsオブジェクトなどを含む)を繰り返し、個々の属性値ごとにループを生成し、文付きカスタム反復フックを呼び出します.
for (variable of iterable) {
statement
}variable:各繰り返しには異なる属性値があります.iterable:繰り返し表示可能な属性を持つオブジェクト

繰り返しArray:

let iterable = [10, 20, 30];

for (let value of iterable) {
  console.log(value); // 10, 20, 30
}

Stringの繰り返し:

let iterable = "apple";

for (let value of iterable) {
  console.log(value); // "a", "p", "p", "l", "e"
}

TypedArrayの繰り返し:

let iterable = new intArray([0x00, 0xaa]);

for (let value of iterable) {
  console.log(value); // 0, 170
}

Mapの繰り返し:

let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let entry of iterable) {
  console.log(entry); // [a, 1], [b, 2], [c, 3]
}

for (let [key, value] of iterable) {
  console.log(value); // 1, 2, 3
}

Setの繰り返し:

let iterable = new Set([1, 1, 2, 2, 3, 3]);

for (let value of iterable) {
  console.log(value); // 1, 2, 3
}

for in繰返し文とfor of繰返し文の違い


くりかえし文


オブジェクトのループに使用します.
オブジェクトの場合、for inを使用してオブジェクトのプロパティをチェックできます.

複文


繰り返し可能なオブジェクト(Array、Map、Set、String、TypedArray、Argumentsオブジェクトなどを含む)を繰り返します.
順序が重要である場合はfor ofを使用します.
var iterable = [3, 5, 7];

for (var key in iterable) {
  console.log(key); // 0, 1, 2
}

for (var value of iterable) {
  console.log(value); // 3, 5, 7
}