如果过滤后所有值都为零,则向y:轴添加一个值

Add a value to y:axis if all the values are Zero after filtering

本文关键字:添加 一个 过滤 如果 则向      更新时间:2023-09-26

有一个JavaScript删除重复的标签label:'Adnim'和计数只"1"y:1,跳过零"0"y:0,这是完美的工作,但问题是,如果一个特定的标签的所有值为零,那么标签它给输出什么。

的例子:1

       {y:0,label:'Adnim'},
       {y:0,label:'Adnim'},
        {y:0,label:'Adnim'},
        {y:1,label:'Adnim'},//Value of y:1  is one all are zero 
      {y:0,label:'Adnim2'},
     {y:0,label:'Adnim2'},
       {y:1,label:'Adnim2'},
      {y:1,label:'Adnim2'},
当前输出:

      {y:1,label:'Adnim'},
      {y:2,label:'Adnim2'},

例子:2

       {y:0,label:'Adnim'},
       {y:0,label:'Adnim'},
        {y:0,label:'Adnim'},
        {y:0,label:'Adnim'},//Value of y:0  is all are zero 
      {y:0,label:'Adnim2'},
     {y:0,label:'Adnim2'},
       {y:1,label:'Adnim2'},
      {y:1,label:'Adnim2'},
当前输出:

      {y:2,label:'Adnim2'},
预期输出:

     {y:0,label:'Adnim'},
      {y:2,label:'Adnim2'},

Javscript:

 var list = [
  {y:0,label:'Adnim'},
   {y:0,label:'Adnim'},
    {y:0,label:'Adnim'},
    {y:1,label:'Adnim'},
  {y:0,label:'Adnim2'},
 {y:0,label:'Adnim2'},
   {y:1,label:'Adnim2'},
  {y:1,label:'Adnim2'},
]
var counters = {}
var result = [];
var resultString = '';
var label;
list.forEach(function(el){
    label = el.label;
    // Skip zero y's
    if (el.y === 0) return;
    // Increase counter values
    if (counters.hasOwnProperty(label)) {
        counters[label] += 1;
    } else {
        counters[label] = 1;
    }
});
// Convert counters object to array of objects
for (var label in counters) {
    result.push({'label': label, 'y': counters[label]});
}
// Render result to the target div
console.log(result);
result = result.map(function(el){ return '{y: ' + el.y + ', label: "' + el.label + '"}' });
resultString = '[' + result.join(', ') + ']';
$('#target').html(resultString);

当没有y==0的项时,您永远不会创建计数器条目。尝试以下替换您的forEach函数(在Chrome中测试):

list.forEach(function(el) {
    label = el.label;
    // Init the counters entry if necessary
    if (!counters.hasOwnProperty(label)) 
        counters[label] = 0;
    if (el.y !== 0)
        counters[label] += 1;
});