javascript - 相当于字典的数据结构?

标签 javascript data-structures dictionary

我正在使用 JavaScript 工作,希望保留一份设置的公里/英里/小时近似值列表。 (我无法以编程方式进行转换,我正在使用需要某些值的外部 API,因此它确实必须是等效的字典。)

目前我正在使用一个对象:

var KM_MPH = { 10: 16, 12: 20, 15: 24 };

从英里/小时转换为公里非常简单:

var km = KM_MPH[10];

给定公里数,如何找到英里/小时?另外,对象是 JavaScript 中用于此类事物的最佳数据结构吗?我更习惯Python。

最佳答案

基本的 JavaScript 对象实际上是这里的最佳选择。要查找反向映射,您可以执行以下操作:

function mphToKM(val){
    for(var km in KM_MPH){
        if(KM_MPH[km] === val){
            return km;
        } 
    }

    return null;
}

或者,如果您预计必须进行大量查找,我建议使用第二个 JS 对象,它是第一个 JS 对象的镜像

var mph_km = {};
for(var km in KM_MPH){
    mph_km[KM_MPH[km]] = km;
}

// mph_km[16] ==> 10

我不知道您实际上是否这样做是为了在每小时公里到每小时英里之间进行转换...如果是这样,直接进行转换而不是依赖 HashMap 似乎更有意义值。

var conversionRate = 1.609344; // kilometres per mile
function kphToMPH(val){
    return val / conversionRate ;
}

function mphToKPH(val){
    return val * conversionRate;
}

关于javascript - 相当于字典的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112484/

相关文章:

javascript - 当模式处于事件状态时,传单 map 仍然存在。为什么?

javascript - 当我第一次隐藏元素时,if 语句永远不会返回 true

c++ - sets、multisets、maps 和 multimaps 如何在内部工作

java - 图深度优先搜索有时有效,有时无效

python - 对于大数据(通过 stdin.readlines())在 python 中比 map() 更快的方法

python - 用有序字典替换字典推导式和defaultdict

javascript - jQuery 附加不能完全与 <script> 标签配合使用

javascript - 自定义 CKeditor 5 的下拉按钮

c++ - Leetcode-167:两个和II-输入数组已排序

python - 使用 iteritems() 时在字典中操作 pandas dataframe