JS рекурсивный поиск\перебор по массиву объектов
Подскажите пожалуйста, как рекурсивно пройтись по массиву и проверить что поля не совпадают? То есть когда я присваиваю "mandatory" напримкр "3" объекту c id "5" -- нужно проверить что его id не равно mandalority, и что в массиве у объекта с id "3" mandatory не равно "5", и что у объекта с id "1" mandatory не равно "3" или "5", и так далее вглубь...
В этом примере если у первого объекта mandatory "5" - ошибка, если у 3 объекта mandatory "5" - ошибка, если у 4 объекта mandatory "5" или "3" - ошибка.
[{
id: 5,
mandatory: 3
},
{
id: 4,
mandatory: 3
},
{
id: 3,
mandatory: 1
},
{
id: 1,
mandatory: null
},
]
Ответы (1 шт):
Автор решения: Sezz Fess
→ Ссылка
let mandatoryEntry = arr.find(e => e.id === mandatory)
var endSearch = mandatoryEntry.mandatory === null
while (!endSearch) {
if (mandatoryEntry.mandatory === id) {
console.log(`Loop detected!!!`)
return false
}
mandatoryEntry = arr.find(e => e.id === mandatoryEntry.mandatory)
var endSearch = mandatoryEntry.mandatory === null
}