module.exports = function count(mixedVar, mode) { // discuss at: https://locutus.io/php/count/ // original by: Kevin van Zonneveld (https://kvz.io) // input by: Waldo Malqui Silva (https://waldo.malqui.info) // input by: merabi // bugfixed by: Soren Hansen // bugfixed by: Olivier Louvignes (https://mg-crea.com/) // improved by: Brett Zamir (https://brett-zamir.me) // example 1: count([[0,0],[0,-4]], 'COUNT_RECURSIVE') // returns 1: 6 // example 2: count({'one' : [1,2,3,4,5]}, 'COUNT_RECURSIVE') // returns 2: 6 let key let cnt = 0 if (mixedVar === null || typeof mixedVar === 'undefined') { return 0 } else if (mixedVar.constructor !== Array && mixedVar.constructor !== Object) { return 1 } if (mode === 'COUNT_RECURSIVE') { mode = 1 } if (mode !== 1) { mode = 0 } for (key in mixedVar) { if (mixedVar.hasOwnProperty(key)) { cnt++ if ( mode === 1 && mixedVar[key] && (mixedVar[key].constructor === Array || mixedVar[key].constructor === Object) ) { cnt += count(mixedVar[key], 1) } } } return cnt }