如何将值存储在hashmap / Array中以便稍后进行比较

时间:2013-11-15 15:21:39

标签: javascript

我需要遍历1-100个潜在值并检查值是否出现一次或两次并根据该值做某些事情。 (这些值只会出现0,1,2次)。有没有办法可以存储我在数组或散列图中生成的值,并比较我生成的新值和已经在hashmap中的其他值?

我很感激帮助!

编辑:我将要拉的值是整数,所以我想我可以在我的hashmap中对所有值进行排序,然后从那里进行比较?

3 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分: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();

现在你有了一系列排序键。

答案 2 :(得分:0)

您可以使用Objects概念...

来完成此操作
var obj = new Object();

function(val) {
    if (obj.val == undefined) {
        obj.val = 1;
    } else {
        obj.val++;
    }
}

console.log(obj);