diff options
Diffstat (limited to 'node_modules/locutus/php/array/count.js')
-rw-r--r-- | node_modules/locutus/php/array/count.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/node_modules/locutus/php/array/count.js b/node_modules/locutus/php/array/count.js new file mode 100644 index 0000000..379699b --- /dev/null +++ b/node_modules/locutus/php/array/count.js @@ -0,0 +1,43 @@ +'use strict'; + +module.exports = function count(mixedVar, mode) { + // discuss at: http://locutus.io/php/count/ + // original by: Kevin van Zonneveld (http://kvz.io) + // input by: Waldo Malqui Silva (http://waldo.malqui.info) + // input by: merabi + // bugfixed by: Soren Hansen + // bugfixed by: Olivier Louvignes (http://mg-crea.com/) + // improved by: Brett Zamir (http://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 + + var key; + var 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; +}; +//# sourceMappingURL=count.js.map
\ No newline at end of file |