我需要遍历1-100个潜在值并检查值是否出现一次或两次并根据该值做某些事情。 (这些值只会出现0,1,2次)。有没有办法可以存储我在数组或散列图中生成的值,并比较我生成的新值和已经在hashmap中的其他值?
我很感激帮助!
编辑:我将要拉的值是整数,所以我想我可以在我的hashmap中对所有值进行排序,然后从那里进行比较?
答案 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);