Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Получаем новый объект с увеличенным value
- function increaseObject(srcObject, incValue) {
- // Оригинальный объект ТЕПЕРЬ ТОЧНО не модифицируется
- var newObject = cloneObject(srcObject);
- // Рекурсивный перебор с колбэком
- traverseRecursive(newObject, function (item) {
- item.value += incValue; // увеличиваем value объекта
- });
- return newObject;
- }
- // Рекурсивный перебор массива объектов
- function traverseRecursive(item, callback) {
- item.forEach(function(item) {
- // Если у объекта есть childnodes и их количество больше одного
- if (typeof item.childnodes !== 'undefined' && item.childnodes.length > 0) {
- // Запускаем рекурсию
- traverseRecursive(item.childnodes, callback);
- }
- if (typeof item === 'object') {
- callback(item);
- }
- });
- }
- // Создаем копию объекта
- function cloneObject(obj) {
- if (obj === null || typeof obj !== 'object') {
- return obj;
- }
- var temp = obj.constructor();
- for (var key in obj) {
- temp[key] = cloneObject(obj[key]);
- }
- return temp;
- }
Advertisement
Add Comment
Please, Sign In to add comment