ページ 11

for(var i = 0; i < $gameParty.allItems().length; i++){ が重い

Posted: 2024年2月15日(木) 23:36
by 論よりショーゴ
以下のようなfor文を使って、特定のアイテムを配列化しています。

コード: 全て選択

  for(var i = 0; i < $gameParty.allItems().length; i++){
    if($gameParty.allItems()[i].meta.test){
         arr.push($gameParty.allItems()[i]);
    }
  }
でも、所持しているアイテムの種類が多くなると、
全部のアイテムを読みに行く上記のコードはかなり重くなります。
もっと軽くする方法はありますか?

Re: for(var i = 0; i < $gameParty.allItems().length; i++){ が重い

Posted: 2024年2月15日(木) 23:45
by 一般ピープル

コード: 全て選択

var allItems = $gameParty.allItems();
var arr = [];

for (var i = 0; i < allItems.length; i++) {
    var item = allItems[i];
    if (item.meta.test) {
        arr.push(item);
    }
}
forEach()のほうがいいかと思いますが、流れが分かりやすいようにしています。
一度変数に入れておけば、何度もアイテムリストを読みに行くことがなくなりますので
パフォーマンスが改善されるかと思います。

以下は、forEachの場合です。

コード: 全て選択

var arr = [];
$gameParty.allItems().forEach(function(item) {
    if (item.meta.test) {
        arr.push(item);
    }
});
お試ください。

Re: for(var i = 0; i < $gameParty.allItems().length; i++){ が重い

Posted: 2024年2月15日(木) 23:55
by 論よりショーゴ
一般ピープル 様

ありがとうございます。
めちゃくちゃ早くなりました!
二つの処理方法まで教えてくれてとても助かりました。