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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

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

Q&A

解決済

3回答

2187閲覧

連想配列へ要素を追加するコードはどちらが適切ですか?

pypanman

総合スコア15

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

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

0グッド

1クリップ

投稿2018/05/29 08:40

編集2018/05/29 08:42

連想配列へ要素を追加するコードですが、下記のパターン1とパターン2であれば、どちらが適切ですか?

パターン1

javascript

1var hash1 = {}; 2 3hash1.aaa = 'あああ'; 4hash1.bbb = 'びびび'; 5hash1.ccc = 'ししし';

パターン2

javascript

1var hash2 = {}; 2 3hash2['aaa'] = 'あああ'; 4hash2['bbb'] = 'びびび'; 5hash2['ccc'] = 'ししし';

上記2パターン以外の書き方があれば、それも教えていただけると嬉しいです。

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

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

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

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

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

guest

回答3

0

ベストアンサー

こんにちは。
より良いのはパターン1かと思います。

コードの検証ツールとしてESLint を使っている中で、パターン2で書くと、以下

イメージ説明

のように ESLint から

["aaa"] is better written in dot notation. (dot-notation)

と言われてしまいます。

こちらのほうがいい理由について、ESLint のページ

https://eslint.org/docs/rules/dot-notation

には、

In JavaScript, one can access properties using the dot notation (foo.bar) or square-bracket notation (foo["bar"]). However, the dot notation is often preferred because it is easier to read, less verbose, and works better with aggressive JavaScript minimizers.

と書かれているので、これに乗っておくか、という感じです。

以上参考になれば幸いです。

投稿2018/05/29 08:57

編集2018/05/29 13:07
jun68ykt

総合スコア9058

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

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

pypanman

2018/05/30 01:55

なるほど! ありがとうございます。
guest

0

JavaScriptって、どちらの書き方もできますもんね。
両者の違い、コンピュータにとっても読みやすく、
人にとってもわかりやすいか、という部分では、
jun68yktさんがおっしゃっている通りなのですが、
僕はいつも、用途によって使い分けています。

例えば、状況によって、
jQuery関数の、addClassとremoveClassを切り分けたい時です。

javascript

1function classAction(scroll){ 2 var classMethod = scroll >= 300 ? 'addClass' : 'removeClass'; 3 4 $('#testTarget')[classMethod]('viewClass'); 5}

これは、scrollが300以上なら、addClass、300未満だったらremoveClassを実行する、というものになります。
こうすることによって、ステートメントが一行でスッキリさせることができます。
ドット記法だとこの方法は取れないかと思います。
ifでブロック分けして処理しなければいけません。
(もっとも、そっちのほうが、人的にも見栄え的にわかりやすいんですが。
そして、今回のクラス入れ替えのケースはjQueryでもネイティブでも一つの関数でできるんですけどね。)

上記の用途以外は、ドット記法で書いております。

ご参考になれば幸いです。

投稿2018/05/30 02:11

miyabi_takatsuk

総合スコア9528

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

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

pypanman

2018/05/30 04:47

ご回答ありがとうございます。 通常はドット記法、必要であればブラケット記法、で使い分けておられるのですね。 僕もそうします。
guest

0

こんな感じで

javascript

1var hash3 = {}; 2Object.defineProperty(hash3,'aaa',{value:'あああ',configurable:true,enumerable:true,writable:true}); 3Object.defineProperty(hash3,'bbb',{value:'べべべ',configurable:true,enumerable:true,writable:true}); 4Object.defineProperty(hash3,'ccc',{value:'ししし',configurable:true,enumerable:true,writable:true}); 5/*とりあえず表示*/ 6for(var i in hash3){; 7 console.log(i+":"+hash3[i]); 8} 9 10/*要素をいじって*/ 11delete(hash3.aaa); 12hash3.ccc="ほげー"; 13 14/*再表示*/ 15for(var i in hash3){; 16 console.log(i+":"+hash3[i]); 17}

投稿2018/05/29 09:22

yambejp

総合スコア114779

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

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

pypanman

2018/05/30 01:58

あべし! こんな構文あるんですねー。 勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問