Search code examples
vue.jsmultidimensional-arraycountvue-cli

Total in nested array Vue


I'm using vue-cli and I'm trying to figure out how I can get the total numbers of active in Tasks array.

Tasks: [ 
            {name: 'Sam',  available: [{active: 'yes', day:'Mon'},{active: 'yes', day:'Tues'}]},
            {name: 'Yoko', available: [{active: 'yes', day:'Mon'}]},
            {name: 'Alec', available: [{active: 'yes', day:'Wed'},{active: 'yes', day:'Thurs'}]},
            {name: 'Pat',  available: [{active: 'yes', day:'Tues'},{active: 'yes', day:'Thurs'} ]}
       ]
 
Expected output:
Total: 7

Any help would be great, thanks!


Solution

  • You need iterate through tasks array, filter active items and sum it with reduce method:

    const tasks = [ 
      {name: 'Sam',  available: [{active: 'yes', day:'Mon'},{active: 'yes', day:'Tues'}]},
      {name: 'Yoko', available: [{active: 'yes', day:'Mon'}]},
      {name: 'Alec', available: [{active: 'yes', day:'Wed'},{active: 'yes', day:'Thurs'}]},
      {name: 'Pat',  available: [{active: 'yes', day:'Tues'},{active: 'yes', day:'Thurs'} ]}
    ];
    
    const total = tasks.reduce((sum, task) => {
        return sum + (task.available.filter(item => item.active === 'yes')).length
    }, 0)