Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] 展開されているサブカテゴリノード数の制限 #4

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

daiiz
Copy link
Member

@daiiz daiiz commented Jan 3, 2016

No description provided.

@daiiz
Copy link
Member Author

daiiz commented Jan 3, 2016

論理削除だと少し遅い

うまく動かない(原因調査中)

miil_categories.forEach(function (cate) {
if (cate.category_id !== 588 && cate.category_id !== 589) {
_this3.parseMiilCategories(cate, [_this3.getNodeIdxById('miilroot')]);
_this4.parseMiilCategories(cate, [_this4.getNodeIdxById('miilroot')]);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

forEachでは、thisObjectを二番目の引数で指定することができます。
thisの参照を増やさないで、この機能は積極的に使っていきましょう

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

この部分は,下のコードをbabelで変換したら出てきたのもので,アロー関数を使えば上手くthisを補足してくれるものと思っていたのですが,

appLoad () {
    miil_categories.forEach(cate => {
        if (cate.category_id !== 588 && cate.category_id !== 589) {
            this.parseMiilCategories(cate, [this.getNodeIdxById('miilroot')]);
        }
    });
    this.drawGraph();
}

やはり,

arr.forEach(elem, self => { });

という2引数で書いた方が良いということですね。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なるほど、babelで変換したのですね。

通常は、そういう場合for of構文を使います。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...of

[1, 2, 3].forEach(elem => console.log(this.a));

は、

for (let elem of [1,2,3]) {
  console.log(this.a);
}

と同値です。インデックスをとらないようなforEachをbabelで使うときは、for ofを使っていきましょう。

ついでに、forEachよりJSではインデックスアクセスの方がArrayオブジェクトにとっては効果的(まず、関数オブジェクトがforEachは必ず作成されますし、関数呼び出しのオーバーヘッドもかかるので)なため、for ofの場合、for(var i = 0; ...) { ... }といった感じで変換されます。

https://babeljs.io/repl/#?experimental=false&evaluate=true&loose=false&spec=false&code=function%20A%28%29%20{%0A%0Afor%20%28let%20i%20of%20[1%2C2%2C3]%29%20{%0A%20%20console.log%28this.a%29%3B%0A}%0A%0A}

@daiiz daiiz changed the title 展開されているサブカテゴリノード数の制限 [WIP] 展開されているサブカテゴリノード数の制限 Jan 10, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants