Tengo esta situación, tengo una matriz y necesito filtrarla y obtener los índices de los elementos filtrados, como este ejemplo:
var arr = ['2022-05', '2023-01', '2022-04', '2022-02', '2023-08'];
Estoy usando este filtro:
var filter = arr.filter(e => e.split("-")[0] == '2022'); //To get the values from 2022
Y me sale este resultado:
filter = ['2022-05', '2022-04', '2022-02'];
Lo que necesito hacer ahora es obtener también el índice de estos elementos, por lo que sería este:
filter = ['2022-05', '2022-04', '2022-02']; index = [0,2,3]
¿Cómo puedo hacer eso? Gracias.
Antes de filtrar la matriz, puede asignarla a una nueva matriz de objetos que incluya los índices.
var arr = ['2022-05', '2023-01', '2022-04', '2022-02', '2023-08']; var output = arr.map((value, index) => ({index, value})) .filter(e => e.value.split("-")[0] == '2022'); console.log(output);
cuando coincida, simplemente agregue el índice deseado a la matriz
var arr = ['2022-05', '2023-01', '2022-04', '2022-02', '2023-08']; var index = []; var filter = arr.filter((e, indx) => { const flag = e.split("-")[0] == '2022'; if (flag) { index.push(indx) } return flag; }); console.log(filter) console.log(index)
Podrías usar el método indexOf
:
filter.map(el => arr.indexOf(el));