Я не уверен, что вы хотите делать со значениями ваших объектов или массивов, но надеюсь, что это вам поможет. Следующая функция печатает значения и рекурсивно вызывает себя в случае объектов или массивов:
const getValues = (value, path = '') => {
if (typeof value === 'object'
&& value !== null
&& value.length === undefined
&& Object.keys(value).length > 0) {
// It is an Object (not null, array or Date instance)
Object.keys(value).forEach((prop) => {
const _path = path.length ? `${path}.${prop}` : prop;
getValues(value[prop], _path);
});
} else if (typeof value === 'object'
&& value !== null
&& value.length > 0) {
// It is an array
value.forEach((item, idx) => {
const _path = path.length ? `${path}[${idx}]` : idx;
getValues(item, _path);
});
} else {
console.log(`${path} = ${JSON.stringify(value)}`);
}
};
Например:
const obj = {
a: 1,
b: { a: 1, b: 2 },
c: [
{ a: 1, b: 2 },
{ a: 1, b: 2 },
],
d: {},
e: [],
f: new Date(),
g: null,
h: undefined,
};
getValues(obj, 'obj');
Будет выводить:
obj.a = 1
obj.b.a = 1
obj.b.b = 2
obj.c[0].a = 1
obj.c[0].b = 2
obj.c[1].a = 1
obj.c[1].b = 2
obj.d = {}
obj.e = []
obj.f = "2020-07-14T06:02:12.037Z"
obj.g = null
obj.h = undefined