0

我的一些代码有问题。我有以下对象(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??
                    }   
                }
            }
        }
    }
}

我查看了 splice 以从共享数组中删除对象,但这会改变数组索引,这对于上述循环来说是个问题......这一切看起来都很混乱。

任何帮助将不胜感激,因为我已经尝试这样做一段时间了..

如果这不是最好的方法,我很想知道更好的方法:)

谢谢

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 回答