JSFiddle - React, Tailwind, and code Playground

JavaScript

//Plan:
//tab = [0,1,0,[1,0,0],[0,[1],1]] => wynik = [[1],[3,0],[4,1,0],[4,2]]
//Czyli jak wywołam tab[cokowiek z wyniku] to otrzymam 1
//Np. tab[4][1][0] da 1
//Wynik ma 4 elementy bo w tab są 4 jedynki

curr_indexes=[];
wynik = []


function findIndexes(arr, func){
    
    arr.forEach((value, index)=>{
        if(Array.isArray(value)){
            // Jak jest tablica to dodajemy aktualny indeks i wchodzimy głębiej
            curr_indexes.push(index);
            findIndexes(value, func);
        }else{
            // value nie jest tablicą - jesteśmy najgłębiej

            if(func(value)){
                //spełnia warunki - dodajemy do wyniku
                curr_indexes.push(index);
                wynik.push(curr_indexes)
            }

            if(index === arr.length-1){
                // Osiągnięto koniec najgłębszej tablicy - resetuj aktualną tablicę indeksów
                curr_indexes = []
            }

        }
    })
}

testArr = [0,1,0,[1,0,0],[0,[1],1]];

findIndexes(testArr, x=>x===1);
console.log(wynik);