2016-10-06 11 views
0

快速问题 我有一个散列表,每个键都有一个对象,它分为两部分:主题和查询。 我试图获取查询和主题的值,但我不能。我所得到的都是未定义的。 我如何获得价值?在javascript中获取散列表中的信息

function IntersectGroups(keyToGeneDetailMappingGroupArray) { 

    allKeys = CreateSetWithAllKeys(keyToGeneDetailMappingGroupArray); 

    var numElements = Math.pow(2, keyToGeneDetailMappingGroupArray.length); 

    var results1= new Array(numElements); 
    for (var j = 0; j < results.length; j++) 
    { 

     results1[j] = 0; 
    } 


    // Run for every key (for all groups) 
    for (var currentKey in allKeys.items) 
    { 

     var linescontent=""; 
     var index = 0; 

     // Run for every group 
     for (var k = 0; k < keyToGeneDetailMappingGroupArray.length; k++) 
     { 
      var isGroupContained = keyToGeneDetailMappingGroupArray[k].hasItem(currentKey); 

      if (isGroupContained) 
      { 
       //Not relevent: Watch the data structures: sumElements += keyToGeneDetailMappingGroupArray[k].getItem(currentKey).length; 
       sumElements += 1; 
       linescontent += currentKey.Query;//I get undefined 
       index += Math.pow(2, k); 
      } 
     } 

     results1[index] += linescontent; 
    } 
    return results1; 
} 

数据例如

Query Subject 

Crella_elegansContig_3 tr|Q8BUQ6|Q8BUQ6_MOUSE 
Crella_elegansContig_10 sp|Q8CHY3-2|DYM_MOUSE 
Crella_elegansContig_14 sp|Q9R1L5|MAST1_MOUSE 
Crella_elegansContig_16 sp|Q8BGZ4-2|CDC23_MOUSE 
Crella_elegansContig_26 sp|Q9CPS6|HINT3_MOUSE 
Crella_elegansContig_29 sp|Q8BP67|RL24_MOUSE 
Crella_elegansContig_31 sp|A3FIN4-2|AT8B5_MOUSE 
Crella_elegansContig_32 tr|E9PZX7|E9PZX7_MOUSE 
Crella_elegansContig_33 sp|Q6P7W0|SENP6_MOUSE 

enter image description here

+0

请添加数据和函数头以及函数的调用。 –

+1

请看看这里:[mcve] –

回答

1

你似乎是将你的信息,以results1,但你正在返回results这将是不确定的。

+0

对不起,我的坏。编辑我的问题。 那是不是问题 – badbuda

+0

它仍然返回undefined?如果是这样,你可以发布一些数据进行比较 –

0
for (var currentKey in allKeys.items) { 
    /* ... */ 
       linescontent += currentKey.Query;//I get undefined 

for .. in将设置allKeys.items对象(和原型)的currentKey的键。即使它是一个数组,它将被设置为项目的索引,而不是单个项目,并且始终是一个字符串。

您的代码中没有提供allKeys.items实际外观的信息,但是如果您期望遍历元素,则可以使用for (var currentKey of allKeys.items)(需要es2015环境)或for (var i of allKeys.items) { var currentKey = allKeys.items[i]; /* ... */ }