在javascript中对对象进行分组

时间:2015-09-20 21:52:23

标签: javascript grouping paperjs

我正在研究云用户paperjs的可视化,我无法找出动态创建组的最有效方法。

当一个云形状与另一个云形状相交时,它们就会变成一个组(paperjs中的复合路径),它工作正常,但可能有许多不同的组,这是我的困惑所在。

目前我检查交集,当两个相交时,我创建一个引用这两个的新tmpGroup。

Cloud.prototype.checkIntersection = function() {
    for(var i=0;i<cloudArray.length;i++){                       //go through all clouds
        if(this.path !== cloudArray[i].path){                   //prevent self-check
            if(this.path.intersects(cloudArray[i].path)){       //if intersects
                tmpGrp = [this.path,cloudArray[i].path];        //create a tmpGrp
                groupClouds(tmpGrp);
            }
        }
    }
}

然后我无法弄清楚......

function groupClouds(tmpGrp){
    if(grps.length > 0){                //if there are multiple distinct groups
        for(var i=0;i<grps.length;i++){ //loop through all groups
            //if(tmpGrp !== grps[i]){       //broken, expected to be able to compare
                                            //arrays easier in JS
                grps.push(tmpGrp);      //add pair of intersecting paths to a new group
            //}
        }
    }else{
        grps[0] = tmpGrp;               //if none are defined, the first will be the tmpGrp
    }
}

有没有人在这种情况下有任何建议?我建议创建一个可以像这样引用每个组的数组:

Grp[i][group] = [1,2,5] //all objects in pair
Grp[i][pool] = [3,4]    //all objects remaining

但我似乎无法正确实现。

0 个答案:

没有答案