for in vs for of
3182 ワード
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
}
Reference
この問題について(for in vs for of), 我々は、より多くの情報をここで見つけました
https://velog.io/@yeonlisa/for-in-vs-for-of
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
let obj = {
a: 1,
b: 2,
c: 3
};
for (let prop in obj) {
console.log(prop, obj[prop]); // a 1, b 2, c 3
}
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"
}
let iterable = [10, 20, 30];
for (let value of iterable) {
console.log(value); // 10, 20, 30
}
let iterable = "apple";
for (let value of iterable) {
console.log(value); // "a", "p", "p", "l", "e"
}
let iterable = new intArray([0x00, 0xaa]);
for (let value of iterable) {
console.log(value); // 0, 170
}
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
}
let iterable = new Set([1, 1, 2, 2, 3, 3]);
for (let value of iterable) {
console.log(value); // 1, 2, 3
}
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
}
Reference
この問題について(for in vs for of), 我々は、より多くの情報をここで見つけました https://velog.io/@yeonlisa/for-in-vs-for-ofテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol