diff options
Diffstat (limited to 'node_modules/locutus/php/array/array_count_values.js')
-rw-r--r-- | node_modules/locutus/php/array/array_count_values.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/node_modules/locutus/php/array/array_count_values.js b/node_modules/locutus/php/array/array_count_values.js new file mode 100644 index 0000000..58a9fba --- /dev/null +++ b/node_modules/locutus/php/array/array_count_values.js @@ -0,0 +1,62 @@ +'use strict'; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +module.exports = function array_count_values(array) { + // eslint-disable-line camelcase + // discuss at: http://locutus.io/php/array_count_values/ + // original by: Ates Goral (http://magnetiq.com) + // improved by: Michael White (http://getsprink.com) + // improved by: Kevin van Zonneveld (http://kvz.io) + // input by: sankai + // input by: Shingo + // bugfixed by: Brett Zamir (http://brett-zamir.me) + // example 1: array_count_values([ 3, 5, 3, "foo", "bar", "foo" ]) + // returns 1: {3:2, 5:1, "foo":2, "bar":1} + // example 2: array_count_values({ p1: 3, p2: 5, p3: 3, p4: "foo", p5: "bar", p6: "foo" }) + // returns 2: {3:2, 5:1, "foo":2, "bar":1} + // example 3: array_count_values([ true, 4.2, 42, "fubar" ]) + // returns 3: {42:1, "fubar":1} + + var tmpArr = {}; + var key = ''; + var t = ''; + + var _getType = function _getType(obj) { + // Objects are php associative arrays. + var t = typeof obj === 'undefined' ? 'undefined' : _typeof(obj); + t = t.toLowerCase(); + if (t === 'object') { + t = 'array'; + } + return t; + }; + + var _countValue = function _countValue(tmpArr, value) { + if (typeof value === 'number') { + if (Math.floor(value) !== value) { + return; + } + } else if (typeof value !== 'string') { + return; + } + + if (value in tmpArr && tmpArr.hasOwnProperty(value)) { + ++tmpArr[value]; + } else { + tmpArr[value] = 1; + } + }; + + t = _getType(array); + if (t === 'array') { + for (key in array) { + if (array.hasOwnProperty(key)) { + _countValue.call(this, tmpArr, array[key]); + } + } + } + + return tmpArr; +}; +//# sourceMappingURL=array_count_values.js.map
\ No newline at end of file |