[解決済み] D3 javascript foreachとeachの違いについて
疑問点
とはどのような違いがあるのでしょうか?
forEach
と
each
をD3jsで使うか?
どのように解決するには?
まず
.forEach()
はd3の一部ではなく、javascriptの配列のネイティブ関数です。ですから
["a", "b", "c"].forEach(function(d, i) { console.log(d + " " + i); });
// Outputs:
a 0
b 1
c 2
そしてそれは、d3がページに読み込まれていない場合でも動作します。
次に、d3の
.each()
は、d3 のセレクションで動作します (あなたが
d3.selectAll(...)
). 技術的には
.forEach()
を呼び出すことができます。なぜなら、裏側では d3 セレクションは特別な関数を持つ配列だからです(そのうちの1つが
.each()
). しかし、あなたはそれを行うべきではありません、なぜなら。
-
そうすることで、望ましい動作が得られないからです。どのように
.forEach()
を使用する方法を知ることは、d3 の内部構造を深く理解することを必要とします。ドキュメント化された、APIの公開部分を使うことができるのであれば、なぜそれをするのでしょうか。 -
を呼び出すとき
.each(function(d, i) { })
を呼び出すと、単にd
とi
のような関数が呼び出されます。this
に関連付けられた HTML DOM 要素を指すような関数が呼び出されます。d
. 言い換えればconsole.log(this)
の中からfunction(d,i) {}
は次のようなログを記録します。<div class="foo"></div>
のようなものを記録します。これは便利です。this
オブジェクトのCSSプロパティ、コンテンツ、または何かを変更するために関数を呼び出すことができるからです。通常、これらのプロパティを設定するには、次のようにd3を使用します。d3.select(this).style('color', '#c33');
.
主な収穫は
.each()
を使用すると、3つの必要なものにアクセスできるようになることです。
d
,
this
と
i
. とは
.forEach()
で、(冒頭の例のような) 配列の場合、2つのものしか得られません (
d
と
i
といった具合に)、HTML要素もこの2つに関連付けるには、たくさんの作業が必要になります。そしてそれが、とりわけd3の有用性なのです。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] 文字列とラベルのローカライズとグローバリゼーションのベストプラクティス【終了しました
-
[解決済み] javascriptでオプションのパラメータを扱う