在jquery中从2d数组创建树

时间:2016-03-18 06:04:48

标签: javascript jquery arrays tree

我们正在尝试从2d数组创建一个树,并想检查该树中是否存在给定节点。

例如 假设我们有这些数组

links = [[0,3],[2,4],[8,5],[9,1],[5,2],[1,5]]
check = [[7,6],[1,2],[8,3],[8,9]]

必须给出结果

 [false,true,false,true]

因为

1 and 2 are connected via 5 (1-5-2)
8 and 9 are connected via 5 and 1 (8-5-1-9)

根据我们的说法,我们的逻辑是1-5-2([5,2],[1,5])和8-5-1-9([8,5],[9,1],[ 1,5]是树,它在阵列中相互连接。如果我们可以像这样创建树,那么我们可以解决这个问题。

我为树结构编写了一些代码,但它没有给出正确的结果。

var links = [[0,3],[2,4],[8,5],[9,1],[5,2],[1,5]];
var check = [[7,6],[1,2],[8,3],[8,9]];

console.log(links.join(",").split(","));


var p, temp = {};
var test={};
var result={};

for (var i=links.join(",").split(",").length; i--; ) {
    p = links.join(",").split(",")[i];
    temp[p] = (p in temp) ? temp[p]+1 : 1;
}

for(key in temp){
    if(temp[key]>1){
        test[key]=temp[key];
        console.log("now greater then 1");
      }
}
console.log(test);

for (var index = 0, len = links.length; index < len; index++) {
  //  console.log(links[index]);
  for(key in test){
  console.log(key +"----"+links[index]);
    if(key in links[index]){
        console.log(links[index]);
    }else{
        console.log("in else");
    }
  }
}
console.log(temp);   

Fiddle

0 个答案:

没有答案