boykodev

Ria Test

Mar 2nd, 2016
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Получаем новый объект с увеличенным value
  2. function increaseObject(srcObject, incValue) {
  3.     // Оригинальный объект ТЕПЕРЬ ТОЧНО не модифицируется
  4.     var newObject = cloneObject(srcObject);
  5.  
  6.     // Рекурсивный перебор с колбэком
  7.     traverseRecursive(newObject, function (item) {
  8.         item.value += incValue; // увеличиваем value объекта
  9.     });
  10.  
  11.     return newObject;
  12. }
  13.  
  14. // Рекурсивный перебор массива объектов
  15. function traverseRecursive(item, callback) {
  16.     item.forEach(function(item) {
  17.         // Если у объекта есть childnodes и их количество больше одного
  18.         if (typeof item.childnodes !== 'undefined' && item.childnodes.length > 0) {
  19.             // Запускаем рекурсию
  20.             traverseRecursive(item.childnodes, callback);
  21.         }
  22.         if (typeof item === 'object') {
  23.             callback(item);
  24.         }
  25.     });
  26. }
  27.  
  28. // Создаем копию объекта
  29. function cloneObject(obj) {
  30.     if (obj === null || typeof obj !== 'object') {
  31.         return obj;
  32.     }
  33.  
  34.     var temp = obj.constructor();
  35.     for (var key in obj) {
  36.         temp[key] = cloneObject(obj[key]);
  37.     }
  38.  
  39.     return temp;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment