Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var testDataLength = 500000;
- (function () {
- function createTimeLog(func, timer) {
- console.time(timer);
- func();
- console.timeEnd(timer);
- }
- function createTaskTitle(title) {
- console.log("%c" + title, 'font-size: 18px');
- }
- function generateSimpleArray(length) {
- var arr = [];
- for (var i = 1; i < length; i++) {
- arr.push(i*2);
- }
- return arr;
- }
- function generateObject(length) {
- var obj = {};
- for (var i = 1; i < length; i++) {
- obj['key' + i] = {Name: 'random string', LastName: 'random string'} ;
- }
- return obj;
- }
- function generateArrayOfObject(length) {
- var arr = [];
- for (var i = 1; i < length; i++) {
- arr.push({Name: 'random string', LastName: 'random string'});
- }
- return arr;
- }
- function summArrayFor(arr) {
- var res = 0;
- for (var i = 0; i < arr.length; i++) {
- res += arr[i];
- }
- return res;
- }
- function summArrayReduce(arr) {
- return arr.reduce(function(res, value) {
- return res + value;
- }, 0);
- }
- function arraysKeysToLowerCaseByFor(arr) {
- var isArr = arr instanceof Object && arr instanceof Array;
- if (!isArr) return objectKeysToLowerCaseByFor(arr);
- for (var i = 0; i < arr.length; i++) {
- if (arr[i] instanceof Array) {
- arraysKeysToLowerCaseByFor(arr[i]);
- } else if (arr[i] instanceof Object) {
- objectKeysToLowerCaseByFor(arr[i]);
- }
- }
- return arr;
- }
- function arraysKeysToLowerCaseByMap(arr) {
- var isArr = arr instanceof Object && arr instanceof Array;
- if (!isArr) return objectKeysToLowerCaseByFor(arr);
- arr.map(function (value) {
- if (value instanceof Array) {
- arraysKeysToLowerCaseByFor(value);
- } else if (value instanceof Object) {
- objectKeysToLowerCaseByFor(value);
- }
- });
- return arr;
- }
- function objectKeysToLowerCaseByFor(obj) {
- if (obj instanceof Array) {
- return arraysKeysToLowerCaseByFor(obj);
- }
- var keys = Object.keys(obj);
- for (var i = 0; i < keys.length; i++) {
- if (obj.hasOwnProperty(keys[i])) {
- var newKey = keys[i].toLowerCase();
- if (obj[keys[i]] instanceof Object) objectKeysToLowerCaseByFor(obj[keys[i]]);
- if (newKey !== keys[i]) {
- obj[newKey] = obj[keys[i]];
- delete obj[keys[i]];
- }
- }
- }
- return obj;
- }
- function objectKeysToLowerCaseByForIn(obj) {
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) {
- var newKey = key.toLowerCase();
- if (obj[key] instanceof Object) objectKeysToLowerCaseByForIn(obj[key]);
- if (newKey !== key) {
- obj[newKey] = obj[key];
- delete obj[key];
- }
- }
- }
- return obj;
- }
- function objectKeysToLowerCaseByForEach(obj) {
- Object.keys(obj).forEach(function (key) {
- var newKey = key.toLowerCase();
- if (obj[key] instanceof Object) objectKeysToLowerCaseByForEach(obj[key]);
- if (newKey !== key) {
- obj[newKey] = obj[key];
- delete obj[key];
- }
- });
- return obj;
- }
- // Task 1
- var array100 = generateSimpleArray(testDataLength);
- createTaskTitle("Task #1");
- createTimeLog(function () { return summArrayFor(array100); }, 'Sum array with ' + testDataLength + ' by *FOR* loop');
- createTimeLog(function () { return summArrayReduce(array100); }, 'Sum array with ' + testDataLength + ' by *REDUCE* loop');
- // Task 2
- var object100 = generateObject(testDataLength), object100a = generateObject(testDataLength), object100b = generateObject(testDataLength);
- createTaskTitle("Task #2");
- createTimeLog(function () { return objectKeysToLowerCaseByFor(object100); }, 'Object keys with ' + testDataLength + ' items to lower case by *FOR* and *Object.keys*');
- createTimeLog(function () { return objectKeysToLowerCaseByForIn(object100a); }, 'Object keys with ' + testDataLength + ' items to lower case by *FOR IN* loop');
- createTimeLog(function () { return objectKeysToLowerCaseByForEach(object100b); }, 'Object keys with ' + testDataLength + ' items to lower case by *FOR EACH* and *Object.keys*');
- // Task 3
- var array100 = generateArrayOfObject(testDataLength), array100a = generateArrayOfObject(testDataLength);
- createTaskTitle("Task #3");
- createTimeLog(function () { return arraysKeysToLowerCaseByFor(array100); }, 'Array with ' + testDataLength + ' objects to lowercase by *FOR*');
- createTimeLog(function () { return arraysKeysToLowerCaseByMap(array100a); }, 'Array with ' + testDataLength + ' objects to lowercase by *MAP*');
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement