let json = {
"first": {
"first_fullname": 'abc',
"first_address": '1 street name',
"first_phone": 123456
},
"second": {
"second_fullname": 'xyz',
"second_address": '2 street name',
"second_phone": 987654
}
}
var prop1 = 'first_address'
var prop2 = 'address'
const hasProp = (json, prop, wildcard) =>
Object.values(json)
.flatMap(person => Object.keys(person)
.filter(key => wildcard ? key.includes(prop) : key === prop)
)
console.log(hasProp(json, prop1, false))
console.log(hasProp(json, prop2, true))
const findProp = (json, prop, wildcard) =>
Object.values(json)
.flatMap(person => Object.entries(person)
.filter(([key, value]) => wildcard ? key.includes(prop) : key === prop)
.map(([key, value]) => ({
[key]: value
}))
)
console.log(findProp(json, prop1, false))
console.log(findProp(json, prop2, true))
const findProp2 = (json, prop, wildcard) =>
Object.values(json)
.flatMap(person => Object.entries(person)
.filter(([key, value]) => wildcard ? key.includes(prop) : key === prop)
).reduce((acc, [key, value]) => {
acc[key] = value
return acc
}, {})
console.log(findProp2(json, prop1, false))
console.log(findProp2(json, prop2, true))