统计json文件中出现的名称

Count name occurances in json file

本文关键字:json 文件 统计      更新时间:2023-09-26

如何计算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语句,以防同一对象中的igralec1igralec2属性都包含您要查找的单词。如果你知道它只会是任何给定对象中的一个或另一个属性,那么你可以用一个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);