let obj = {
a: 'f',
b: 78,
c: 'R',
d: {
a: {
a: null,
b: 'E',
c: {
a: true,
b: 'C',
c: 'test'
},
d: 'U'
},
b: {
a: 'R',
b: ['S', 4, 6, 'I'],
c: 0,
},
c: ['O'],
d: null,
e: 'N'
}
}
const getNestedItems = (data, test) =>
data instanceof Object
? Object.values(data).flatMap(n => getNestedItems(n, test))
: test(data) ? [ data ] : [];
const result = getNestedItems(obj, x => /^[A-Z]+$/.test(x)).join('');