私はSelectedItems
というintの配列を持っています。私はAvailableItems
と呼ばれるオブジェクトを含む別の配列を持っており、それはjsonから解析されました。これらのItem
オブジェクトのプロパティは{ContainerID, ContainerName, ItemID, ItemName}
です。javascript intの配列をオブジェクトの配列に変換する
Iは各ItemID
がAvailableItems
でItemID
に対応Item
オブジェクトに置き換えられItems
の配列にintの配列からSelectedItems
を変換します。 SelectedItems
の各ItemID
は一意です。
SelectedItems
の各要素をループ1が、その後、私は
SelectedItems
にコピーする必要があるオブジェクトキーとの対応
ItemID
を見つけること
AvailableItems
経由するたびにルーピング自分自身を見つけます。
私は基本的に非常に非効率的なループを構築しました。私はループの中で繰り返されるループを避けることによってそれを行うより良い方法があるのだろうかと思っていましたか?
サンプルデータ:AvailableItems
については
、あなたは千個のオブジェクトで、その後SelectedItems
ことで
{
ContainerID: i,
ContainerName: 'SomeName',
ItemID: j,
ItemName: 'SomeOtherName'
}
を持つint型
[23,43,64,34...]
の配列は感謝です。
最初の配列に従って2番目の配列をフィルタリングし、結果をArrayのような関数で返すことができます。フィルタを使用すると、最初の要素にArray.indexOfが含まれているかどうかを確認できます.Array.indexOfは、条件がtrueになるたびに> -1にする必要があります。 – mpm
@camus:あなたのコメントは、それをよりうまくやり直す方法のアイデアを与えました。 jQuery.extendを持つAvailableItems配列をCandidateItemsという名前の新しい配列にコピーし、次にその配列をループします。各要素のItemIDが$ .InArrayのSelectedItemsにあるかどうかを確認し、そうでない場合はその要素を削除します。ループの最後に、CandidateArrayをSelectedItemsに割り当てて、 – frenchie