-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathobject.mjs
39 lines (32 loc) · 1004 Bytes
/
object.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"use strict"
import { UNDEFINED } from "./coreJs.mjs";
import { isObject } from "./coreJs.mjs";
export const objectAssign = (...elements) => Object.assign(...elements);
export const objectDelete = (object, ...elements) => {
const toDelete = objectAssign({}, ...elements);
object = objectAssign({}, object);
for (let name in toDelete) {
delete object[name];
}
return object;
}
export const objectAssignIfDoesntExist = (object, ...elements) => {
elements.forEach(e => {
for (let name in e) {
if (object[name] === UNDEFINED) object[name] = e[name];
}
})
return object;
}
export const objectToString = obj => JSON.stringify(obj);
export const deepCloneFastAndRough = obj => JSON.parse(JSON.stringify(obj))
export const deepClone = (obj) => {
const clone = {};
for(let i in obj) {
if (isObject(obj[i]))
clone[i] = deepClone(obj[i]);
else
clone[i] = obj[i];
}
return clone;
}