Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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/2/jquery/77.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按值计数多维数组_Javascript_Jquery_Multidimensional Array_Count - Fatal编程技术网

Javascript jquery按值计数多维数组

Javascript jquery按值计数多维数组,javascript,jquery,multidimensional-array,count,Javascript,Jquery,Multidimensional Array,Count,请帮助我计算表中的特定值 我在此表格中有一些数据: var data = { "metadata": ["FZ", "CS", "CU", "CZ"], "values": [ ["CON", "184.0", "null", "null"], ["ERG SRL", "35.0", "null", "57.0"], ["IO", "6.0", "null", "null"], ["IND", "null",

请帮助我计算表中的特定值

我在此表格中有一些数据:

var data = {
    "metadata": ["FZ", "CS", "CU", "CZ"],
        "values": [
        ["CON", "184.0", "null", "null"],
        ["ERG SRL", "35.0", "null", "57.0"],
        ["IO", "6.0", "null", "null"],
        ["IND", "null", "1753.0", "null"],
        ["LIXL", "1644.0", "null", "3748.0"],
        ["MOXRL", "2285.0", "null", "0.0"],
        ["MOLXL", "11.0", "null", "0.0"],
        ["MURX", "5362.0", "null", "275.0"],
        ["STRL", "197.0", "null", "39.0"]
    ]
};
这是你的电话号码。 在该表中,我有一些值,如
null
0.0
和其他值

我只想在键上计算这些值: 例子: 这是我的桌子:

FZ CS CU CZ CON 184.0 null null ERG 35.0 null 57.0 IO 6.0 null null IND null 1753.0 null LIXL 1644.0 null 3748.0 MOXRL 2285.0 null 0.0 MOLXL 11.0 null 0.0 MURX 5362.0 null 275.0 STRL 197.0 null 39.0 FZ-CS-CU-CZ CON 184.0空 ERG 35.0零57.0 IO 6.0空 IND null 1753.0 null LIXL 1644.0空3748.0 MOXRL 2285.0空0.0 MOLXL 11.0空0.0 MURX 5362.0空275.0 STRL 197.0空39.0 以下是我想要的结果:

CS CU CZ all 9 9 9 null 1 8 3 0.0 0 0 2 >0 8 1 4 CS-CU-CZ 全部9 空1 8 3 零点零零零二 >0 8 1 4 唯一的结果是当我对生成的表中的单元格进行计数时,但如果我想进行分页,这是不好的

根据stackoverflow.com上的几个答案,我尝试了
.length()
count++
,但没有结果

谢谢大家的提示和回答

function countValues(values, column, search) {
  var total = 0;

  for(var i  = 0; i < values.length; i++) {
    if(values[i][column] === search)
      total++;   
  }

  return total;
}

How to use: countValues(data.values, 2, "null")
我希望它足够清晰

但我建议使用或下划线

我希望它足够清晰


但是我建议使用像或下划线这样的框架。这里有一个解决方案,可以将所有数据映射到创建表的整个过程中

HTML:


JS:

var tableHeader=[''];
/*最终映射对象,其结构使元数据和类别的html生成和搜索变得简单*/
/*数组将以与元数据相同的数组顺序包含类别计数*/
var catObj={'all':[],'null':[],'0.0':[],'0':[]};/*“”由于html实体而故意使用vs“>”*/
/*创建标题行并用零填充计数数组*/
$.each(数据、元数据、函数(i、项){
tableHeader.push(“”+项目+“”);
$。每个(catObj,功能(键,arr){
arr[i]=0;
});    
});
表格标题。按下(“”);
/*对值进行分类并更新相应的计数器数组*/
$.each(数据值、函数(i、arr){
$.each(arr,function(idx,val){
catObj[getCategory(val)][idx]++;
});
});
/*从计数器数组创建表行*/
var rowsHtml=[];
$。每个(catObj,功能(键,arr){
rowsHtml.push(“”+键+“”);
行推送(“”+arr.join(“”)+“”);
});
/*插入表格html*/
$('#counter').html(tableHeader.join('')+rowsHtml.join('')
/*帮助器对每个值进行分类*/
函数getCategory(值){
如果(isNaN(值)){
返回值!='null'?'all':'null';
}否则{
返回值==0?'0.0':'0';
}
}
演示:

编辑

如果需要,可以根据元数据值搜索最终对象,如下所示:

function searchCats( meta, category){
   return catObj[category][ $.inArray(meta, data.metadata) ]; 
}
使用

searchCats('FZ', 'all') // returns 9

下面是一个解决方案,它将所有数据映射到创建表的整个过程

HTML:


JS:

var tableHeader=[''];
/*最终映射对象,其结构使元数据和类别的html生成和搜索变得简单*/
/*数组将以与元数据相同的数组顺序包含类别计数*/
var catObj={'all':[],'null':[],'0.0':[],'0':[]};/*“”由于html实体而故意使用vs“>”*/
/*创建标题行并用零填充计数数组*/
$.each(数据、元数据、函数(i、项){
tableHeader.push(“”+项目+“”);
$。每个(catObj,功能(键,arr){
arr[i]=0;
});    
});
表格标题。按下(“”);
/*对值进行分类并更新相应的计数器数组*/
$.each(数据值、函数(i、arr){
$.each(arr,function(idx,val){
catObj[getCategory(val)][idx]++;
});
});
/*从计数器数组创建表行*/
var rowsHtml=[];
$。每个(catObj,功能(键,arr){
rowsHtml.push(“”+键+“”);
行推送(“”+arr.join(“”)+“”);
});
/*插入表格html*/
$('#counter').html(tableHeader.join('')+rowsHtml.join('')
/*帮助器对每个值进行分类*/
函数getCategory(值){
如果(isNaN(值)){
返回值!='null'?'all':'null';
}否则{
返回值==0?'0.0':'0';
}
}
演示:

编辑

如果需要,可以根据元数据值搜索最终对象,如下所示:

function searchCats( meta, category){
   return catObj[category][ $.inArray(meta, data.metadata) ]; 
}
使用

searchCats('FZ', 'all') // returns 9

没有内置的解决方案可以做到这一点。你必须创建自己的函数来过滤/计算所有这些属性/值。你能给我一个提示吗?起点?我不熟悉JavaScription,这里没有jQuery……没有内置的解决方案。你必须创建自己的函数来过滤/计算所有这些属性/值。你能给我一个提示吗?起点?我不熟悉JavaScription这里没有jQuery…非常感谢!我花了两天没有运气,你解决了我的问题。很酷,但是OP需要调用函数12次,它只做等价性,不做“>0”比较。1。已要求进行字符串比较,2。这是他创业的一个非常简单的例子。非常感谢!我花了两天没有运气,你解决了我的问题。很酷,但是OP需要调用函数12次,它只做等价性,不做“>0”比较。1。已要求进行字符串比较,2。这是他创业的一个非常简单的例子。谢谢你的回答。Vury为我提供了一个很好的起点,让我了解如何使用它来实现我所需要的其余功能。你给了我一个更复杂更好的表格,我可以在其他表格中使用。谢谢你们两位。我接受两个答案。我可以投赞成票,因为我没有声望点数,但我将其标记为接受答案。谢谢你的回答。Vury为我提供了一个很好的起点,让我了解如何使用它来实现我所需要的其余功能。你给了我一个更复杂更好的表格,我可以在其他表格中使用。谢谢你们两位。我接受两个答案。我可以投赞成票,因为我没有声望点数,但我会把它标为被接受的答案。