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

How to extract Unique keys from a Hash Table in Javascript

本文关键字:提取 唯一 一键 哈希表 Javascript      更新时间:2023-09-26

我正在尝试用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

so重复了大约3次。

我的数据结构:

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

基本上是奖项的名称和获得奖项的日期。有些奖项只有一个日期,有些则有一系列日期。

键是奖项的名称。

为完成日期/秒。

为了构建这个,i最初有两个数组,然后遍历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。原型的一些奇怪的原因,但(几乎)任何其他名称都可以工作。答案更新,测试。

如果你使用Chrome,给你的对象一个不同的名字,而不是name。显然,在Chrome中它有一些意义,for ... in...循环产生的结果与其他浏览器完全不同。