function recursiveDeepCopy(obj) {
return Object.keys(obj).reduce((v, d) => Object.assign(v, {
[d]: (obj[d].constructor === Object) ? recursiveDeepCopy(obj[d]) : obj[d]
}), {});
}
function cloneDeep(objSource) {
if (typeof objSource !== 'object' || objSource === null) {
return objSource;
}
return cloneDeepRecursive(objSource);
};
function cloneDeepRecursive(objSource) {
let objTarget = Array.isArray(objSource) ? [] : {};
let keys = Object.keys(objSource);
keys.forEach(key => {
let value = objSource[key];
if (value === null) {
objTarget[key] = null;
} else if (typeof value === 'object') {
objTarget[key] = cloneDeepRecursive(value);
} else {
objTarget[key] = value;
}
});
return objTarget;
}
function cloneDeep2(objSource) {
if (typeof objSource !== 'object' || objSource === null) {
return objSource;
}
let keys = Object.keys(objSource);
return keys.reduce((objTarget, key) => {
let value = objSource[key];
if (value === null || typeof value !== 'object') {
objTarget[key] = value;
} else {
objTarget[key] = cloneDeep2(value);
}
return objTarget;
}, Array.isArray(objSource) ? [] : {});
};
function cloneDeep3(objSource) {
if (objSource === null || typeof objSource !== 'object') {
return objSource;
}
return cloneDeep2Recursive(objSource);
};
function cloneDeep2Recursive(objSource) {
return Object.keys(objSource).reduce((objTarget, key) => {
return Object.assign(objTarget, {
[key]: (objSource[key] === null || typeof objSource[key] !== 'object') ? objSource[key] : cloneDeep2Recursive(objSource[key])
});
}, Array.isArray(objSource) ? [] : {});
};
function jsonDeepCopy(o) {
return JSON.parse(JSON.stringify(o));
}
var dimensions = [{
"dimensions": [{
"runtime": {
"common": {
"client": null,
"server": null
}
}
}, {
"device": {
"android": null,
"blackberry": null,
"iemobile": null,
"iphone": null,
"ipad": null,
"kindle": null,
"opera-mini": null,
"palm": null
}
}, {
"environment": {
"development": {
"dev": null,
"test": null
},
"production": {
"stage": null,
"prod": null
}
}
}, {
"lang": {
"ar": {
"ar-JO": null,
"ar-MA": null,
"ar-SA": null,
"ar-EG": null
},
"bn": {
"bn-IN": null
},
"ca": {
"ca-ES": null
},
"cs": {
"cs-CZ": null
},
"da": {
"da-DK": null
},
"de": {
"de-AT": null,
"de-DE": null
},
"el": {
"el-GR": null
},
"en": {
"en-AU": null,
"en-BG": null,
"en-CA": null,
"en-GB": null,
"en-GY": null,
"en-HK": null,
"en-IE": null,
"en-IN": null,
"en-MY": null,
"en-NZ": null,
"en-PH": null,
"en-SG": null,
"en-US": null,
"en-ZA": null
},
"es": {
"es-AR": null,
"es-BO": null,
"es-CL": null,
"es-CO": null,
"es-EC": null,
"es-ES": null,
"es-MX": null,
"es-PE": null,
"es-PY": null,
"es-US": null,
"es-UY": null,
"es-VE": null
},
"fi": {
"fi-FI": null
},
"fr": {
"fr-BE": null,
"fr-CA": null,
"fr-FR": null,
"fr-GF": null
},
"hi": {
"hi-IN": null
},
"hu": {
"hu-HU": null
},
"id": {
"id-ID": null
},
"it": {
"it-IT": null
},
"ja": {
"ja-JP": null
},
"kn": {
"kn-IN": null
},
"ko": {
"ko-KR": null
},
"ml": {
"ml-IN": null
},
"mr": {
"mr-IN": null
},
"ms": {
"ms-MY": null
},
"nb": {
"nb-NO": null
},
"nl": {
"nl-BE": null,
"nl-NL": null,
"nl-SR": null
},
"pl": {
"pl-PL": null
},
"pt": {
"pt-BR": null
},
"ro": {
"ro-RO": null
},
"ru": {
"ru-RU": null
},
"sv": {
"sv-SE": null
},
"ta": {
"ta-IN": null
},
"te": {
"te-IN": null
},
"th": {
"th-TH": null
},
"tr": {
"tr-TR": null
},
"vi": {
"vi-VN": null
},
"zh": {
"zh-Hans": {
"zh-Hans-CN": null
},
"zh-Hant": {
"zh-Hant-HK": null,
"zh-Hant-TW": null
}
}
}
}]
}]