summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/array/array_reverse.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/array/array_reverse.js')
-rw-r--r--node_modules/locutus/php/array/array_reverse.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/node_modules/locutus/php/array/array_reverse.js b/node_modules/locutus/php/array/array_reverse.js
new file mode 100644
index 0000000..fe157aa
--- /dev/null
+++ b/node_modules/locutus/php/array/array_reverse.js
@@ -0,0 +1,41 @@
+'use strict';
+
+module.exports = function array_reverse(array, preserveKeys) {
+ // eslint-disable-line camelcase
+ // discuss at: http://locutus.io/php/array_reverse/
+ // original by: Kevin van Zonneveld (http://kvz.io)
+ // improved by: Karol Kowalski
+ // example 1: array_reverse( [ 'php', '4.0', ['green', 'red'] ], true)
+ // returns 1: { 2: ['green', 'red'], 1: '4.0', 0: 'php'}
+
+ var isArray = Object.prototype.toString.call(array) === '[object Array]';
+ var tmpArr = preserveKeys ? {} : [];
+ var key;
+
+ if (isArray && !preserveKeys) {
+ return array.slice(0).reverse();
+ }
+
+ if (preserveKeys) {
+ var keys = [];
+ for (key in array) {
+ keys.push(key);
+ }
+
+ var i = keys.length;
+ while (i--) {
+ key = keys[i];
+ // @todo: don't rely on browsers keeping keys in insertion order
+ // it's implementation specific
+ // eg. the result will differ from expected in Google Chrome
+ tmpArr[key] = array[key];
+ }
+ } else {
+ for (key in array) {
+ tmpArr.unshift(array[key]);
+ }
+ }
+
+ return tmpArr;
+};
+//# sourceMappingURL=array_reverse.js.map \ No newline at end of file