summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/array/array_count_values.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/array/array_count_values.js')
-rw-r--r--node_modules/locutus/php/array/array_count_values.js62
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