たとえば、この配列を見てみましょう
ar = [6,3,5,1,2]
それを別の配列に変換したいのですが、特定の位置にアイテムを挿入する (スプライス(i,0,item)) か、特定の位置からアイテムを削除する (スプライス(i,1)) という 2 つの操作のみを使用できます。これらのスプライスの使用量を最小限に抑えるソリューションを探しています。
2 番目の重要な条件は、一意の値を持つ配列を考慮し、配列に double が含まれていないことです。
例えば、
ar1 = [6,3,10,5,1,2];
ar2 = [6,3,1,2,5];
ar から ar1 を取得したい場合、必要なスプライスは ar.splice(2,0,10) だけであることは明らかです。ar2 を取得したい場合は、2 つの splice を実行する必要があります: ar.splice(2,1) と push(5) (2 番目は splice(ar.length,0,5) に等しい)
ちなみに、このタスクには自然な実用的価値があります。たとえば、製品のリストと製品フィルターを想像してみましょう。フィルターの設定を変更すると、リストがそれぞれ変更されます。そして、すべての変更に続いて、美しい遅いjqueryがスライドアップ - スライドダウンアニメーションが続きます。このアニメーションは、上にスライドして特定のアイテムを隠したり、新しいアイテムを挿入して下にスライドしたりする場合があります。タスクは、これらのアニメーションの量を縮小することです。つまり、リストの DOM 操作の量を最小限に抑えようとします。