質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2082閲覧

JavaScriptでマップに対してJSLintに警告されない方法で順次アクセスしたい

hitomatagi

総合スコア37

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

0クリップ

投稿2016/05/04 03:51

編集2016/05/04 05:11

###前提・実現したいこと
JavaScriptでマップに対して順次アクセスするコードに対して、JSLintをパスするようなコードを書こうとしています。

for文で順次アクセスするコードに対して、以下のような警告がでます。

Unexpected 'for'.
for (key in userMap) {

マップに対して順次アクセスする際に、JSLintに警告されないコーディング方法を教えていただけないでしょうか。

###該当のソースコード

javascript

1var hoge = (function () { 2 "use strict"; 3 4 var userMap = {name: 'yamada', age: '20'}; 5 var key; 6 7 for (key in userMap) { 8 if (userMap.hasOwnProperty(key)) { 9 console.log(key + ":" + userMap[key]); 10 } 11 } 12}());

###試したこと
※ ItoTomonoriさんに回答いただき、試してみたことを追記します。

node v4.4.3でマップに対して、単純に forEach() を使うコードを試してみたところ、

userMap.forEach (p); {
^
TypeError: userMap.forEach is not a function

といったエラーが出ます。
調べてみたところ、forEach() は配列に対してのみ利用できようです。
forEach()を使う解決策の場合は、下記どのようにすれば動くコードになるのかを教えていただければ助かります。

javascript

1var hoge = (function () { 2 "use strict"; 3 4 var userMap = {name: 'yamada', age: '20'}; 5 var key; 6 7 var p = function (value, key, map) { 8 console.log(key + ":" + value); 9 }; 10 11 userMap.forEach (p); 12}());

###補足情報(言語/FW/ツール等のバージョンなど)
ブラウザやJavaScriptのバージョンは新しいものでOKです。
jQueryのeach()を使わない、JavaScriptとしてのコーディング方法を知りたいです。

makoto-n👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

for文はJSLintでは推奨されていないようですね。
JSLint Help

リンク先に書かれている通り、forEachを使えばよいかと思います。

JavaScript

1var hoge = (function () { 2 "use strict"; 3 4 var userMap = new Map(); 5 userMap.set('name', "yamada"); 6 userMap.set('age', "20"); 7 8 userMap.forEach(function (value, key) { 9 console.log(key + ":" + value); 10 }); 11}());

投稿2016/05/04 04:56

kentei_syunrai

総合スコア946

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hitomatagi

2016/05/04 05:14

回答ありがとうございます。 new Map()するところがポイントでした。
guest

0

JSLint does not recommend use of the for statement. Use array methods like forEach instead. The for option will suppress some warnings. The forms of for that JSLint accepts are restricted, excluding the new ES6 forms.

との事ですので、ES6であれば、forは非推奨、foeEachを使って書かないと、駄目なようです。
なので、forをforEachで書き換えればよろしいかと。

投稿2016/05/04 04:37

ItoTomonori

総合スコア1283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hitomatagi

2016/05/04 05:25

回答ありがとうございます。 方向性としては、forEach()ということのようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問