在二维数组 JavaScript 中插入单词和计数
insert words and count in 2 dimensional array javascript
我有一个国家名称数组,我想创建名称的二维数组,并且有计数。我拥有的数组是,
names = [Afghanistan,Alaska,Alaska,Alaska,Alaska,Alaska,Argentina,Argentina,British Virgin Islands,British Virgin Islands]
所以我想要二维数组中每个国家的计数。 例如,我需要这样的东西
country['Afghanistan, 1]
country['Alaska, 5]
country['Argentina, 2]
等等。
有人可以帮忙吗?谢谢
这是你要求的:
var nameCounts = {};
for(var i = 0; i < names.length; i++) {
if(names[i] in nameCounts) {
nameCounts[names[i]]++;
} else {
nameCounts[names[i]] = 1;
}
}
var country = [];
for(var name in nameCounts) {
country.push([name, nameCounts[name]]);
}
虽然如果我是你,一旦我填充了nameCounts
,我会停下来,这是一张从名字到计数的地图。
此外,如果您知道名称是按字母顺序排列的,则可以对此进行优化,就像您的示例中一样。
怎么样:
names = ["Afghanistan","Alaska","Alaska","Alaska","Alaska","Alaska","Argentina","Argentina","British Virgin Islands","British Virgin Islands"];
function countWords(o,n){
o[n]=(o[n])?o[n]+1:1;
return o;
};
function makeTuples(obj){
var tuples=[];
for(var i in obj){
tuples.push([i, obj[i]])
}
return tuples;
}
console.log(makeTuples(names.reduce(countWords, {})))
这是要玩的小提琴。
有关Array.reduce()
的文档,请查看MDN。
不支持Array.reduce()
的旧浏览器应与 UnderscoreJs 中的相应实现一起使用
这是另一种直接创建结果数组的方法:
function getNamesCount(a) {
var nameIndex = {};
var results = [];
for (var i=0, iLen=a.length, name; i<iLen; i++) {
name = a[i];
if (!nameIndex.hasOwnProperty(name)) {
nameIndex[name] = results.length;
results.push(name, 0);
}
results[nameIndex[name] + 1] += 1;
}
return results;
}
相关文章:
- 将样式表插入iframe
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 当鼠标悬停在文本中的单词上时显示警报
- 如何动态插入jquery代码
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 拆分单词jquery
- 如何让程序检查所选单词中是否有按键
- 动态插入的表:JQuery未检测到最后一行
- CKEditor-自定义单词或短语插入功能
- 如何在jquery中使用replace和regex在单词的大写字符前插入空格
- 根据插入符号的位置从文本区域中提取整个单词
- 仅在完整单词后插入 HTML
- 在二维数组 JavaScript 中插入单词和计数
- 在单个单词内插入文本.独特的环境
- 在两个单词后插入新行
- 从函数输入到Javascript中插入带有换行符的单词
- 在tinyMCE编辑器中,将插入符号移动到单词的末尾
- 使用正则表达式和javascript每2个单词插入回车
- 当一个连续单词的长度为50个字符时,插入空格