2015-06-06 2 views
0

Я хочу рассчитать общее количество «0» против метки «a» и подсчитать общее количество «1» против метки «a». и подсчитайте общее число «1» против метки «b».Удалить дубликаты и показать уникальные с графом в Div

Div: Input1

[ 
    {y: 0 , label: 'a'}, 
    {y: 0 , label: 'a'}, 
    {y: 1 , label: 'a'}, 
    {y: 1 , label: 'a'}, 
    {y: 1, label: 'b'}, 
    {y: 1, label: 'b'}, 
    {y: 1, label: 'b'} 

] 

Div: Input2

[ 
    {y: 0 , label: 'a'}, 
    {y: 0 , label: 'a'}, 
    {y: 1 , label: 'a'}, 
    {y: 1 , label: 'a'}, 
    {y: 1, label: 'b'}, 
    {y: 1, label: 'b'}, 
    {y: 1, label: 'b'} 

] 

Я хочу, чтобы выход, с дубликатами удалены» Выход я ожидал от около входа является:

Div output1 : Это будет вычислять только «1» для входа div1

[ 
     {y: 2, label: 'a'}, 
     {y: 3, label: 'b'}, 

    ] 

Div output2: Это будет рассчитывать только "0" из DIV input2

[ 
     {y: 2, label: 'a'}, 
     {y: 0, label: 'b'}, 

    ] 
+0

Ваш вопрос сбивает с толку! plz перефразируйте свой вопрос! – Tim

+0

@Tim Я изменил свой вопрос для лучшего понимания .. пожалуйста, дайте мне знать ваше предложение – Abdul

+0

@Tim ждет ответа .... – Abdul

ответ

0

Да это возможно!

Эта проблема известна как агрегация проблемы, как правило, вы будете использовать карту и уменьшить агрегировать Значение

//data is the your value array 
data.filter(function(item) { 
    //filter the data with the condition 
    return !((item.y === 1) && (item.label === 'a')); 
}).reduce(function(result, value) { 
    let label = value.label; 

    //Check if the label exists?, if yes, add the y value 
    for (let i = 0; i < result.length; i++) { 
     if(result[i].label === label) { 
      result[i].y++; 

      return result; 
     } 
    } 

    //If label not exist add new label into the array and init the y value 
    result.push({ 
     label: label, 
     y: 1 
    }) 

    return result; 
}, []); // Init an empty array 
Смежные вопросы