统计json文件中出现的名称
Count name occurances in json file
如何计算JSON
文件中的出现次数,比如说一个名称。我想知道JSON
文件中出现了多少次,比如说名称"MICO",我想把它存储在var mico=2;
之类的变量中。我的JSON
文件如下所示:
[
{
"igralec1": "LEON",
"datum": "Cetrtek - 21. Julij 2016",
"set1": "4",
"set2": "6",
"set3": "6",
"set4": "-",
"set5": "-",
"igralec2": "MICO",
"set21": "6",
"set22": "1",
"set23": "4",
"set24": "-",
"set25": "-"
},
{
"igralec1": "MICO",
"datum": "Ponedeljek - 11. Julij 2016",
"set1": "6",
"set2": "6",
"set3": "6",
"set4": "-",
"set5": "-",
"igralec2": "PERO",
"set21": "2",
"set22": "1",
"set23": "3",
"set24": "-",
"set25": "-"
}
]
假设JSON已(以某种方式)检索到一个名为json
的变量中,则必须对其进行解析以获得一个数组:
var array = JSON.parse(json);
尽管如果您使用了jQueryAjax方法来获取它,jQuery可能会为您解析它,因此您可以跳过这一步。无论如何,假设解析的数据(以某种方式)在一个名为array
:的变量中
function searchForWord(word, array) {
return array.reduce(function(s, o) {
if (o.igralec1 === word) s++;
if (o.igralec2 === word) s++;
return s;
}, 0);
}
var micoCount = searchForWord("MICO", array); // 2
var peroCount = searchForWord("PERO", array); // 1
演示:https://jsfiddle.net/rzmada6p/1/
我使用了两个if
语句,以防同一对象中的igralec1
和igralec2
属性都包含您要查找的单词。如果你知道它只会是任何给定对象中的一个或另一个属性,那么你可以用一个if
和一个或:来实现
if (o.igralec1 === searchWord || o.igralec2 === searchWord) s++;
进一步阅读:数组.reduce()
方法。
使用RegExp
构造函数和String.match
函数的解决方案:
var jsonData= '[{"igralec1": "LEON","datum":"Cetrtek - 21. Julij 2016","set1": "4","set2": "6","set3": "6","set4": "-","set5": "-","igralec2": "MICO","set21": "6","set22": "1","set23": "4","set24": "-","set25": "-"},{"igralec1": "MICO","datum": "Ponedeljek - 11. Julij 2016","set1": "6","set2": "6","set3": "6","set4": "-","set5": "-","igralec2": "PERO","set21": "2","set22": "1","set23": "3","set24": "-","set25": "-"}];';
var getCount = function(jsonData, str){
var re = new RegExp(''"' + str +''"', "ig");
return jsonData.match(re).length;
};
console.log(getCount(jsonData, "MICO")); // 2
console.log(getCount(jsonData, "LEON")); // 1
function count(data, entry) {
return data
.map(obj =>
Object
.keys(obj)
.map(key => obj[key])
.filter(item => item === entry)
.length)
.reduce((res, val) => res + val, 0);
}
用法:
const data = []; // your array here
console.log(count(data, 'MICO')); // 2
如果你知道密钥:
function count(data, keys, entry) {
return data1
.reduce((res, obj) =>
keys.forEach(key => obj[key] === entry && res++) || res, 0);
}
用法:
const data = []; // your array here
console.log(count(data, ['igralec1', 'igralec2'], 'MICO')); // 2
请注意,它使用es2015。
您可以使用Jquery grep函数。示例代码将如下所示。我假设您的JSON数组名称是arr工作代码
var array = [
{
"igralec1": "LEON",
"datum": "Cetrtek - 21. Julij 2016",
"set1": "4",
"set2": "6",
"set3": "6",
"set4": "-",
"set5": "-",
"igralec2": "MICO",
"set21": "6",
"set22": "1",
"set23": "4",
"set24": "-",
"set25": "-"
},
{
"igralec1": "MICO",
"datum": "Ponedeljek - 11. Julij 2016",
"set1": "6",
"set2": "6",
"set3": "6",
"set4": "-",
"set5": "-",
"igralec2": "PERO",
"set21": "2",
"set22": "1",
"set23": "3",
"set24": "-",
"set25": "-"
}
];
var MICO=0;
var objJson = jQuery.grep(array, function( n, i ) {
if(n.igralec1=="MICO" || n.igralec2 =="MICO"){
MICO++;
}
});
alert(MICO);
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 不显示带有本地json文件数据的谷歌地图脚本
- 可以't使用Appcelerator将JSON文件解析为JavaScript中的TableView
- 加载两个具有相同父密钥名称的json文件
- 使用JSON文件中的变量(字符串)填充文本区域
- 动态显示JSON文件内容
- 正在尝试将JSON文件放入JS数组
- 如何检查Json文件更新,如果更新了,则用更新的数据刷新我的页面
- 单击按钮更改加载到表中的JSON文件
- 处理一个JSON文件;完全相同的副本不是
- 在Javascript中加载JSON文件
- 使用Bootstrap将JSON文件加载到表中
- Angular 2:在本地.json文件上找不到文件
- JSON-从浏览器向外部服务器发送哪些http头JSON文件
- 如何获取d3.js中json文件中具有特定值的总行数
- 如何在dojo应用程序构建概要文件中加载json文件
- jQuery UI使用json文件自动完成
- 通过Azure存储以HTML形式获取JSON文件
- ngResource没有'从JSON文件解析HTML时不起作用