【JavaScript】連想配列・配列を順に処理するには?(for…in・for…of)
おはようございます。タカヒデです。
本日は、「JavaScriptにおける、『連想配列・配列を順に処理する方法』及び、『for…in文』『for…of文』」を紹介します。
- JavaScriptにおける『連想配列・配列を順に処理する方法』が理解できない
- 『for…in文』『for…of文』の記載方法と記載例を知りたい
ぜひ本記事を参考にしてください。
連想配列の中身を順に処理(for…in文)
「連想配列の中身を取り出して順に処理」する場合には『for…in文』を使用します。
ここでは、「fruitPrice」という連想配列の中身を取り出し、格納されている、「apple:200」,「grape:300」,「orange:100」を順に実行します。
「まてまて、そもそも連想配列って何だっけ?」という方は以下の例で思い出してくださいね。
キーと値がセットとなった配列
例)商品と価格⇒orange/100
では、『for…in文』の記載方法を見ていきましょう。
// for...in文の記載方法
for(仮変数 in 連想配列){
ループ内で実行する命令
}
具体的にどのように記載するのか、記載例も見ていきます。
let fruitPrice = {
apple: 200,
grape: 300,
orange: 100
};
for (let key in fruitPrice) {
console.log(key + ":" + fruitPrice[key]);
}
//実行結果:apple:200,grape:300,orange:100連想配列「fruitPrice」のキーを取り出し、仮変数keyにセットしながらループを繰り返していることが分かります。
配列の要素を順に処理(for…of文)
続けて、「配列の要素を順に処理」する場合には『for…of文』を使用します。
ここでは、「fruit」という配列の中身を取り出し、格納されている、「apple」,「grape」,「orange」を順に実行します。
まずは『for…of文』の記載方法です。
// for...of文の記載方法
for(仮変数 of 反復可能なオブジェクト){
ループ内で実行する命令
}
こちらも記載例を見ていきます。
let fruit = ["apple", "grape", "orange"];
for (let value of fruit) {
console.log(value);
}
//実行結果:apple,grape,orange配列「fruit」の要素である、「apple」,「grape」,「orange」が順に出力できているのがわかりますね。
補足:配列の時には「for…of」を利用すべし
ここまで、『for…in文』『for…of文』の説明をしてきました。
しかし、
「わざわざ『for…in文』と『for…of文』を分けなくても連想配列も配列も『for…in文』でいいんじゃね?」
と思われている方はいらっしゃいませんか?
あなたは非常に鋭いです。
しかし、配列の時には「for…of文」を利用すべきなのです。
試しに、配列に「test」オブジェクト
「Array.prototype.test = function () { };」
を追加する場合を見ていきます。
■「for…in」で実行した場合
let fruit = ["apple", "grape", "orange"];
Array.prototype.test = function () { };
for (let key in fruit) {
console.log(fruit[key]);
}
//実行結果:apple,grape,orange,ƒ () { }■「for…of」で実行
let fruit = ["apple", "grape", "orange"];
Array.prototype.test = function () { };
for (let value of fruit) {
console.log(value);
}
//実行結果:apple,grape,orange「for…of」で実行した場合には正しく出力できていますが、「for…in」で実行した場合には拡張された機能まで出力されてしまいます。
このように、オブジェクトを追加した際に想定しない挙動が起こるため、配列の時には「for…of文」を利用するようにしましょう。
まとめ
以上が「JavaScriptにおける『連想配列・配列を順に処理する方法』及び、『for…in文』『for…of文』」の紹介でした。
- 連想配列の中身を順に処理する場合:『for…in文』
- 配列の要素を順に処理する場合『for…of文』
- 想定しない挙動が起こらないよう、配列の時には『for…of文』を利用すること
この記事が誰かの参考になれば幸いです。
お疲れさまでした。
