Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. var testDataLength = 500000;
  2.  
  3. (function () {
  4. function createTimeLog(func, timer) {
  5. console.time(timer);
  6. func();
  7. console.timeEnd(timer);
  8. }
  9.  
  10. function createTaskTitle(title) {
  11. console.log("%c" + title, 'font-size: 18px');
  12. }
  13.  
  14. function generateSimpleArray(length) {
  15. var arr = [];
  16. for (var i = 1; i < length; i++) {
  17. arr.push(i*2);
  18. }
  19. return arr;
  20. }
  21.  
  22. function generateObject(length) {
  23. var obj = {};
  24. for (var i = 1; i < length; i++) {
  25. obj['key' + i] = {Name: 'random string', LastName: 'random string'} ;
  26. }
  27. return obj;
  28. }
  29.  
  30. function generateArrayOfObject(length) {
  31. var arr = [];
  32. for (var i = 1; i < length; i++) {
  33. arr.push({Name: 'random string', LastName: 'random string'});
  34. }
  35. return arr;
  36. }
  37.  
  38. function summArrayFor(arr) {
  39. var res = 0;
  40. for (var i = 0; i < arr.length; i++) {
  41. res += arr[i];
  42. }
  43. return res;
  44. }
  45.  
  46. function summArrayReduce(arr) {
  47. return arr.reduce(function(res, value) {
  48. return res + value;
  49. }, 0);
  50. }
  51.  
  52. function arraysKeysToLowerCaseByFor(arr) {
  53. var isArr = arr instanceof Object && arr instanceof Array;
  54. if (!isArr) return objectKeysToLowerCaseByFor(arr);
  55. for (var i = 0; i < arr.length; i++) {
  56. if (arr[i] instanceof Array) {
  57. arraysKeysToLowerCaseByFor(arr[i]);
  58. } else if (arr[i] instanceof Object) {
  59. objectKeysToLowerCaseByFor(arr[i]);
  60. }
  61. }
  62. return arr;
  63. }
  64.  
  65. function arraysKeysToLowerCaseByMap(arr) {
  66. var isArr = arr instanceof Object && arr instanceof Array;
  67. if (!isArr) return objectKeysToLowerCaseByFor(arr);
  68. arr.map(function (value) {
  69. if (value instanceof Array) {
  70. arraysKeysToLowerCaseByFor(value);
  71. } else if (value instanceof Object) {
  72. objectKeysToLowerCaseByFor(value);
  73. }
  74. });
  75. return arr;
  76. }
  77.  
  78. function objectKeysToLowerCaseByFor(obj) {
  79. if (obj instanceof Array) {
  80. return arraysKeysToLowerCaseByFor(obj);
  81. }
  82.  
  83. var keys = Object.keys(obj);
  84. for (var i = 0; i < keys.length; i++) {
  85. if (obj.hasOwnProperty(keys[i])) {
  86. var newKey = keys[i].toLowerCase();
  87. if (obj[keys[i]] instanceof Object) objectKeysToLowerCaseByFor(obj[keys[i]]);
  88. if (newKey !== keys[i]) {
  89. obj[newKey] = obj[keys[i]];
  90. delete obj[keys[i]];
  91. }
  92. }
  93.  
  94. }
  95. return obj;
  96. }
  97.  
  98. function objectKeysToLowerCaseByForIn(obj) {
  99. for (var key in obj) {
  100. if (obj.hasOwnProperty(key)) {
  101. var newKey = key.toLowerCase();
  102. if (obj[key] instanceof Object) objectKeysToLowerCaseByForIn(obj[key]);
  103. if (newKey !== key) {
  104. obj[newKey] = obj[key];
  105. delete obj[key];
  106. }
  107. }
  108. }
  109. return obj;
  110. }
  111.  
  112. function objectKeysToLowerCaseByForEach(obj) {
  113. Object.keys(obj).forEach(function (key) {
  114. var newKey = key.toLowerCase();
  115. if (obj[key] instanceof Object) objectKeysToLowerCaseByForEach(obj[key]);
  116. if (newKey !== key) {
  117. obj[newKey] = obj[key];
  118. delete obj[key];
  119. }
  120. });
  121. return obj;
  122. }
  123.  
  124.  
  125. // Task 1
  126. var array100 = generateSimpleArray(testDataLength);
  127. createTaskTitle("Task #1");
  128. createTimeLog(function () { return summArrayFor(array100); }, 'Sum array with ' + testDataLength + ' by *FOR* loop');
  129. createTimeLog(function () { return summArrayReduce(array100); }, 'Sum array with ' + testDataLength + ' by *REDUCE* loop');
  130.  
  131. // Task 2
  132. var object100 = generateObject(testDataLength), object100a = generateObject(testDataLength), object100b = generateObject(testDataLength);
  133. createTaskTitle("Task #2");
  134. createTimeLog(function () { return objectKeysToLowerCaseByFor(object100); }, 'Object keys with ' + testDataLength + ' items to lower case by *FOR* and *Object.keys*');
  135. createTimeLog(function () { return objectKeysToLowerCaseByForIn(object100a); }, 'Object keys with ' + testDataLength + ' items to lower case by *FOR IN* loop');
  136. createTimeLog(function () { return objectKeysToLowerCaseByForEach(object100b); }, 'Object keys with ' + testDataLength + ' items to lower case by *FOR EACH* and *Object.keys*');
  137.  
  138. // Task 3
  139. var array100 = generateArrayOfObject(testDataLength), array100a = generateArrayOfObject(testDataLength);
  140. createTaskTitle("Task #3");
  141. createTimeLog(function () { return arraysKeysToLowerCaseByFor(array100); }, 'Array with ' + testDataLength + ' objects to lowercase by *FOR*');
  142. createTimeLog(function () { return arraysKeysToLowerCaseByMap(array100a); }, 'Array with ' + testDataLength + ' objects to lowercase by *MAP*');
  143. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement