Given an object or array, I want to be able to determine if the path exists or not.
Given - Example 1
const spath = "data/message"; const body = { data: { school: 'yaba', age: 'tolu', message: 'true' }, time: 'UTC', class: 'Finals' } it should return true because message can be found in body.data.message else return false.
Given - Example 2
const spath = "data/message/details/lastGreeting"; const body = { data: { school: 'yaba', age: 'tolu', message: { content: 'now', details: { lastGreeting: true } } }, time: 'UTC', class: 'Finals' } it should return true because lastGreeting can be found in body.data.message.details.lastGreeting else return false.
The other condition is when the body consists of an array
Given - Example 3
const spath = "data/area/NY"; const body = { data: { school: 'yaba', age: 'tolu', names : ['darious'], area: [{ NY: true, BG: true ]] message: { content: 'now', details: { lastGreeting: true } } }, time: 'UTC', class: 'Finals' } it should return true because NY can be found in body.data.area[0].NY else return false.
This is the solution I came up with
const findPathInObject = (data, path, n) => { console.log('entered') console.log(data, path) if(!data){ return false } let spath = path.split('/'); for(let i = 0; i<n; i++){ let lastIndex = spath.length - 1; if(spath[i] in data && spath[i] === spath[lastIndex]){ return true } const currentIndex = spath[i]; // spath.splice(currentIndex, 1); return findPathInObject(data[spath[currentIndex]], spath[i+1], spath.length) } return false } console.log(findPathInObject(body, spath, 3))