Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery按键和值对JSON进行计数(这个函数可以工作吗?)_Javascript_Jquery_Json - Fatal编程技术网

Javascript jQuery按键和值对JSON进行计数(这个函数可以工作吗?)

Javascript jQuery按键和值对JSON进行计数(这个函数可以工作吗?),javascript,jquery,json,Javascript,Jquery,Json,按照上述功能的思路去想一些事情是否可行?如果是这样的话,当前的函数/调用有什么问题,我可以做些什么来让它工作 我知道在不包装函数的情况下,我可以做得很好,但我希望这个概念可以重用。应该可以,但是您也可以: function countJSONObjByKeyValue(obj, key, value) { var countJSONShows = 0; $.each(obj, function(i, item) { if(obj[i].key == val

按照上述功能的思路去想一些事情是否可行?如果是这样的话,当前的函数/调用有什么问题,我可以做些什么来让它工作


我知道在不包装函数的情况下,我可以做得很好,但我希望这个概念可以重用。

应该可以,但是您也可以:

function countJSONObjByKeyValue(obj, key, value)
{
    var countJSONShows = 0;
    $.each(obj, function(i, item)
    {
        if(obj[i].key == value){ countJSONShows++; }
    });
    alert(countJSONShows);
}
countJSONObjByKeyValue("dashboardJSON.widgets", "show", "false");

还要注意,obj不能作为字符串传递,我不知道dashboardJSON.widgets是什么样子的,所以我不能100%地告诉您问题出在哪里

但是,一个明显的问题是引用键的方式。处理JSON时,可以通过以下两种方式引用密钥:

function countJSONObjByKeyValue(obj, key, value)
{
   var countJSONShows = 0;


   for(x in obj){
        if(obj[i].key == value){ countJSONShows++; }
   }
   window.alert(countJSONShows);
}
countJSONObjByKeyValue(dashboardJSON.widgets, "show", "false");
您需要做的是,由于您要将密钥的字符串值作为参数传入,因此需要使用第二种方法:

var o = {"foo":"bar"};
o.foo;
o["foo"];

你在那里传递的是一个字符串而不是一个对象。你知道如何将它作为对象传递吗?因为即使尝试不带引号的“dashboardJSON.widgets”,当我知道当前至少有1个时,也会得到0计数。您测试过吗?我认为obj[i].key不起作用,因为key是stringtry obj[i][key]而不是obj[i]。key@spacevillian,你刚刚搞定了。。非常感谢。
obj[i][key]