如何将值存储在哈希图/数组中以便稍后进行比较
How to store values in a hashmap/Array to be compared to later
我需要遍历 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);
相关文章:
- 需要帮助比较数组内的值,使用forEach循环
- 比较数组中的连续元素不会返回任何结果(javascript)
- 比较数组并使用条件对数组列表进行排序
- 比较数组JavaScript中的对象
- 比较数组中的元素,找出元素的最大和
- 使用JavaScript中的for each函数比较数组中的值
- 如何比较数组中的元素(javascript)
- 在 ie8 中使用茉莉花比较数组失败
- 比较数组慢
- 比较数组时遇到麻烦
- d3 本地存储比较数组 .filter 咖啡脚本;数组变量不起作用
- JavaScript 比较数组
- 如何声明和比较数组变量与其他选定变量
- 使用 .some() 比较数组
- 比较数组函数返回未定义
- 一个函数,用于比较数组中是否存在重复的数字
- Javascript 比较数组中的字符串
- 比较数组和 JSON 数据
- 在javascript中检查并比较数组中的数组
- 使用 indexOf() 比较数组中的字符