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

返信する
論よりショーゴ
記事: 24
登録日時: 2021年6月17日(木) 15:33

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

投稿記事 by 論よりショーゴ »

以下のようなfor文を使って、特定のアイテムを配列化しています。

コード: 全て選択

  for(var i = 0; i < $gameParty.allItems().length; i++){
    if($gameParty.allItems()[i].meta.test){
         arr.push($gameParty.allItems()[i]);
    }
  }
でも、所持しているアイテムの種類が多くなると、
全部のアイテムを読みに行く上記のコードはかなり重くなります。
もっと軽くする方法はありますか?
一般ピープル
記事: 7
登録日時: 2022年4月20日(水) 01:02

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

投稿記事 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);
    }
});
お試ください。
論よりショーゴ
記事: 24
登録日時: 2021年6月17日(木) 15:33

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

投稿記事 by 論よりショーゴ »

一般ピープル 様

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

“MV:質問”に戻る