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 ))