Как в JS используя рекурсию сконкатенировать только заглавные буквы в слово?
Необходимо используя рекурсию сконкатенировать только заглавные буквы в слово. Как можно проще, из без затрагивания prototype и т.д
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'
}
}
Ответы (2 шт):
Автор решения: Nikita
→ Ссылка
Вот готовый код:
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'
}
}
function f(o){
let r = '';
for(let i in o){
let e = o[i];
if(typeof e == 'object') r += f(e);
if(typeof e == 'string' && e.toUpperCase() == e) r += e;
}
return r;
}
let str = f(obj);
Автор решения: IvaMuxa
→ Ссылка
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'
}
}
function checkUpperLetters(v) {
let result = "";
switch (typeof v) {
case "object":
for (var a in v) result += checkUpperLetters(v[a]);
break;
case "string":
if (v.length === 1 &&
v === v.toUpperCase() &&
v !== v.toLowerCase()) {
result += v;
}
break;
default:
}
return result;
}
console.log(checkUpperLetters(obj));