0

JavaScript にオブジェクトの配列があります。などcurrent_films[0].f_name, current_films[0].f_pattern。配列を次のような別の配列にコピーしたい:

for(var i=0; i<current_films.length; i++)
    {
            if(current_films[i].f_material == Value)
                {
                    temp[i] = current_films[i];
                }
    }

ただし、これを行うと不可解な問題があるようです。不可解な問題とは、コードが実行されず、配列が思いどおりにコピーされないことを意味します。

どんな助けでも大歓迎です。ありがとうございました!

PS上記のコードが機能しない理由を教えてください。のように、を入れてalert("Reached here");も実行されません。なぜそうなるのですか?

4

2 に答える 2

2

私が見る 1 つの問題は、配列temp[i]にギャップがあることを意味する値に設定することです。値を追加するためにtemp使用できるため、2 セットのインデックスを管理する必要はありません。push()temp

JavaScript's Array.filter()これを少し簡単にするために使用することもできます。Filter は、関数が返す元の配列から値の新しい配列を返しますtrue

var temp = current_films.filter(function(film) {
  return (film.f_material === Value);
});
于 2013-10-12T16:32:59.793 に答える
0

PS上記のコードが機能しない理由を教えてください。のように、alert("Reached here"); を配置すると、実行されません。なぜそうなるのですか?

配列内のすべての要素に対してf_materialが定義されているわけではないと思います。

その場合、私は使用します

if(typeof(current_films[i].f_material)!=='undefined')
{
    if(current_films[i].f_material == Value)
    {
        temp[i] = current_films[i];
    }
}

とにかく、ブラウザーの JavaScript デバッガーに慣れることをお勧めします (コードがブラウザーで実行されると仮定します)。

最後に、配列/オブジェクトをコピーしていないことに注意してください。

temp[i] はcurrent_films[i] への参照です

コードの後半でcurrent_filmsを変更すると、 tempが変更されます。

それが「javascript オブジェクトのコピー」に対して Google が希望する動作でない場合。

于 2013-10-12T17:09:24.780 に答える