繁体   English   中英

如何从Java哈希表中提取唯一键

[英]How to extract Unique keys from a Hash Table in Javascript

我正在尝试使用javascript将哈希表中的唯一,单个键打印到标签上。

我的代码:

 for (var key in name) {
       // write  name in the side panel. //
       $('div.hidden').append('<p>' + key + '</p>').css("color", "white");
       }

这可行。 但是,它会多次打印我的密钥。

谁能告诉我如何改善我的代码,只显示一次哈希表中的所有键。

我的输出示例:-

A
B
C
D
E
F
G
H
A
B
C
D
E
F
G
H
A
B
C
D
E
F
G
H

因此重复abt 3次。

我的数据结构:

{
    'scholar': [ ],
    'contributor': [ ]
and so on.
}

基本上,奖项的名称及其获得的日期。 一些奖项有一个日期,其他奖项有一个日期列表。

关键是奖项的名称。 价值是成就的日期。

为此,我最初有两个数组,然后遍历names数组并生成最终结果:-如果最终结果已经包含键,则将相应的日期推入其值,否则将新键设置为包含其对应的日期。 (创建最终的哈希表)

就像是:

var resultVal = {};
for(var i = 0; i < names.length; ++i) {
    if(resultVal[names[i]]) {
        resultVal[names[i]].push(dates[i]);
    } else {
        resultVal[names[i]] = [dates[i]];
    }
}

这样的事情应该正确吗:

Array.prototype.unique=function unique(){var r=this;var t=[];var mx=r.length;for (var z=0; z< mx; z++){if(t.indexOf(r[z])==-1){t[t.length]=r[z];}}return t;};

 //ex usage:
var name2=[1,2,3,4,3,2,1]
name2.unique().map(function(key){
       // write  name in the side panel. //
       $('div.hidden').append('<p>' + key + '</p>').css("color", "white");
  return key;
 }); // == [1,2,3,4]

注意,出于某些奇怪的原因,变量名称“ name”不能绑定到Array.prototype,但是(几乎)任何其他名称都可以使用。 答案已更新,经过测试。 适用于任何原始数组。

如果您使用的是Chrome,请给您的对象一个不同的名称,而不是name 显然,在Chrome中它具有某些含义,并且for ... in...循环在其中产生的结果与其他浏览器完全不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM