0

私が持っているいくつかのコードに問題があります。オブジェクトを格納する配列である「type」プロパティを持つ次のオブジェクト(bookingDetails)があり、オブジェクトの別の配列があります。例えば:

bookingDetails (object)
- type(array)
    - id
    - share (array)
        Number (object)

まず、これを行うより良い方法はありますか?(タイプごとのシェアに対して多数の「数値」を保存できる必要があります)

次に、誰かが大きな古い「X」をクリックした場合、正しい共有から番号を削除する必要があります。共有が空の場合は、共有が属していたタイプ オブジェクト全体を削除します。

現時点では、次の方法でこれを実行しようとしていました。

for(var d in bookingDetails[data[6]]){
    var it = bookingDetails[data[6]][d];
    if(it.ID === data[0]){
        for(var s in it.Sharing){
            var pa = it.Sharing[s];
            for(var p in pa){
                var pax = pa[p];
                for(var pd in paxData){
                    if(pax.PaxNo === paxData[pd]){
                        //what to do here??
                    }   
                }
            }
        }
    }
}

共有配列からオブジェクトを削除するためにスプライスを見ましたが、これにより配列インデックスが変更され、上記のループの問題になります...すべてが面倒です。

私はしばらくの間これをやろうとしていたので、どんな助けも大歓迎です..

これがこれを行うための最良の方法ではない場合、私はより良い方法を知りたいです:)

ありがとう

4

2 に答える 2

1

アレイを変更する予定がある場合は、アレイを後方に移動します。

 var i;
 for( i = myarray.length-1; i >= 0; i-- ){
    // ...something that might remove myarray[i]...
 } 

データの複雑さの問題について実際に話すことはできません。複雑なデータを表現しようとしているだけかもしれません。また、名前のないインデックスを持つ配列ではなく、名前の付いた属性を持つオブジェクトを使用する必要がある場合もあります。いずれにせよ、正気のために、コードの他の部分から複雑さを分離するために、ユーティリティ関数またはオブジェクトデコレータを作成することをお勧めします。

于 2012-10-19T15:44:16.350 に答える
0
Bookingdetails.types =array with id on the types this bookingdetail belongs to
Bookingdetails.id=Number id of the bookingdetails

Type.id= Number, id of the type
Type.share=Array with bookingdetails id.

これは少し多くのスペースを占有しますが、ルックアップを行うのは少し速くなります。また、要求された操作がより簡単になります。

PS: Typescript を使用すると、さらに簡単になります ;-)

于 2012-12-28T11:33:20.390 に答える