如何将值存储在哈希图/数组中以便稍后进行比较

How to store values in a hashmap/Array to be compared to later

本文关键字:比较 数组 存储 哈希图      更新时间:2023-09-26

我需要遍历 1-100 个潜在值并检查该值是否出现一次或两次,并在此基础上执行某些操作。(这些值只会出现 0,1,2 次)。有没有办法将我生成的值存储在数组或哈希图中,并将我生成的新值与哈希图中已有的其他值进行比较?

我感谢您的帮助!

编辑:我将提取的值是整数,所以我想我可以在我的哈希图中对所有值进行排序,然后从那里进行比较?

除非我误解了你,否则你可以使用 JavaScript 对象。你想做什么?

hash = {};
// Count the number of times each value occurs in the values array.
for (var i = 0; i < values.length; i++) {
    if (!hash[values[i]]) {
        hash[values[i]] = 1;
    } else {
        hash[values[i]] += 1;
    }
}

您始终可以将元素映射到它出现的次数。因此,如果5出现3次,您的地图将是:

{ 5: 3 }

因此,每次获得值时,如果映射包含条目,请更新映射,或者创建一个计数为 1 的新条目:

var map = {};
function addValue(value) {
    if(!map[value]) {
        map[value] = 0;
    }
    map[value]++;
} 

然后你所要做的就是:

for(var i = 0; i < values.length; i++) {
    addValue(values[i]);
}

就排序而言,在迭代时,您不能依赖在 JavaScript 映射中排序的键。但你可以这样做:

var sortedKeys = Object.keys(map).sort();

现在,您有一个排序键数组。

您可以使用对象概念来执行此操作...

var obj = new Object();
function(val) {
    if (obj.val == undefined) {
        obj.val = 1;
    } else {
        obj.val++;
    }
}
console.log(obj);