Skip to content

Commit b1a61b3

Browse files
committed
feat: 🎸 more problem solving questions
1 parent f240339 commit b1a61b3

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

2024 Prep/problem_solving/findValueFromAnObject.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,17 @@ const findNestedValueFromObj = (obj, retrievalString) => {
4141
return finalObj
4242
}
4343

44+
function getValue(obj, nestedKey) {
45+
const keys = nestedKey.split('.')
46+
let value = obj
47+
for (const key of keys) {
48+
value = value[key]
49+
if (value === undefined) return undefined
50+
}
51+
return value
52+
}
53+
4454
const res2 = findNestedValueFromObj(nestedObject2, 'a.b.c.d')
55+
const res3 = getValue(nestedObject2, 'a.b.c.d.E')
56+
console.log('🚀 ~ res3:', res3)
57+
console.log('🚀 ~ res2:', res2)
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
let obj = {
2+
a: '13',
3+
b: {
4+
c: 1,
5+
d: {
6+
f: 11,
7+
},
8+
},
9+
}
10+
11+
// { 'a': "13", 'b.c': 1, 'b.d.f': 11 }
12+
13+
function flattenObject(obj, keyName, resultObj = {}) {
14+
Object.keys(obj).forEach(key => {
15+
if (typeof obj[key] !== 'object') {
16+
if (keyName) {
17+
resultObj[`${keyName}.${key}`] = obj[key]
18+
} else {
19+
resultObj[`${key}`] = obj[key]
20+
}
21+
} else {
22+
if (keyName) {
23+
flattenObject(obj[key], `${keyName}.${key}`, resultObj)
24+
} else {
25+
flattenObject(obj[key], `${key}`, resultObj)
26+
}
27+
}
28+
})
29+
return resultObj
30+
}
31+
32+
const myFlatten = (obj, parentKey) => {
33+
let res = []
34+
for (const key in obj) {
35+
//check if value of the key is an object and recursively call fn
36+
if (typeof obj[key] === 'object' && obj[key] !== null) {
37+
const nestedKeys = myFlatten(obj[key], `${parentKey}${key}.`)
38+
res = { ...res, ...nestedKeys }
39+
} else {
40+
//else store the key value pair with res
41+
res[`${parentKey}${key}`] = obj[key]
42+
}
43+
}
44+
return res
45+
}
46+
47+
const res = myFlatten(obj, '')
48+
console.log('🚀 ~ res:', res)

0 commit comments

Comments
 (0)