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