JSFiddle - React, Tailwind, and code Playground
by AlexGun
JavaScript
const nestedArr = (arr,target) => {
// На случай если в массиве сразу можно найти искомое число
if (arr.indexOf(target) !== -1) return arr.indexOf(target)
else {
for ( let i = 0; i < arr.length; i++ ) {
// Проходимся только по элементам-массивам, т.к. примитивы уже проверили
if (Array.isArray(arr[i])) {
while(arr[i].length !== arr[i].filter(item => !Array.isArray(item)).length) {
// Преобразуем вложенные подмассивы до тех пор, пока элемент не станет 1-рным массивом
arr[i] = arr[i].reduce((acc,cur) => {
if (Array.isArray(cur)) return [...acc, ...cur]
else return [...acc,cur]
},[])
}
// Ищем по полученному одномерному массиву
if (arr[i].includes(target)) {
return i
break
}
}
}
}
}
console.log(nestedArr( [[1],5, [2,2,[3]], [4]], 4 ))
const nestedArr2 = (arr,target) => {
if (arr.indexOf(target) !== -1) return arr.indexOf(target)
else {
for ( let i = 0; i < arr.length; i++ ) {
if (Array.isArray(arr[i])) {
arr[i] = [...arr[i].flat(Infinity)]
if (arr[i].indexOf(target) !== -1) return i
}
}
}
}
console.log(nestedArr2( [[1],5, [2,2,[3]], [4]], 4 ))