我正在学习JavaScript,并且正在尝试解决一个练习,其中必须创建一个包含我名字字母的数组,然后使用Map存储值和每个值出现的次数
我一直在阅读有关Map的信息,我想我应该从与此类似的东西开始,以检查数组是否具有重复项,但是我是一个新手,并且我找不到很多Map示例,因此我没有我在做什么的想法...
var myMap = new Map([[1, "M"], [2, "a"], [3, "r"], [4, "y"]]);
for (i = 1; i < 5; i++) {
console.log(myMap.has (i));
console.log(myMap.get (i));
}
谢谢!
答案 0 :(得分:0)
从这样的事情开始:
var myName = ['M', 'a', 'r', 'y'];
var letterFrequencyMap = new Map();
for (var i = 0; i < myName.length; i++) {
// Your logic to update letterFrequencyMap
}
console.log(letterFrequencyMap);
答案 1 :(得分:0)
var nameArray = Array.from("mary")
console.log(nameArray)
var map = new Map()
nameArray.forEach(function(character) {
if (map.has(character)) {
map.set(character, map.get(character) + 1)
} else {
map.set(character, 1)
}
});
console.log(map);
我已经为您的练习更新了代码,请参阅以下有关Map和Array API的文档:
如有任何疑问,请发表评论。
答案 2 :(得分:0)
您可以从一个空的地图开始,然后用
来增加一个字母的计数map.get(letters[i])
;如果重新调整falsy的值,则取零。然后添加一个并设置新值。
var string = 'annabelle',
letters = string.split(''),
map = new Map,
i, l;
for (i = 0, l = letters.length; i < l; ++i) {
map.set(letters[i], (map.get(letters[i]) || 0) + 1);
}
map.forEach((v, k) => console.log(k, v));
简短版本
var string = 'annabelle',
map = string
.split('')
.reduce((map, char) => map.set(char, (map.get(char) || 0) + 1), new Map);
map.forEach((v, k) => console.log(k, v));