¿Cómo puedo obtener todos los índices en función de una condición para una matriz de objetos? Probé el código a continuación, pero solo devuelve la primera aparición.
a = [ {prop1:"abc",prop2:"yutu"}, {prop1:"bnmb",prop2:"yutu"}, {prop1:"zxvz",prop2:"qwrq"}]; index = a.findIndex(x => x.prop2 ==="yutu"); console.log(index);findIndex devolverá solo un índice coincidente. Puede verificar el valor con la propiedad prop2 usando el filter
a = [ {prop1:"abc",prop2:"yutu"}, {prop1:"bnmb",prop2:"yutu"}, {prop1:"zxvz",prop2:"qwrq"}]; const allIndexes = a .map((e, i) => e.prop2 === 'yutu' ? i : -1) .filter(index => index !== -1); console.log(allIndexes); // This is one liner solution might not work in older IE ('flatMap') const notSupportedInIE =a.flatMap((e, i) => e.prop2 === 'yutu' ? i : []); console.log(notSupportedInIE);Prueba Array.reduce
a = [ {prop1:"abc",prop2:"yutu"}, {prop1:"bnmb",prop2:"yutu"}, {prop1:"zxvz",prop2:"qwrq"}]; index = a.reduce((acc, {prop2}, index) => prop2 ==="yutu" ? [...acc, index] : acc, []); console.log(index);Puede usar normal for loop y cuando alguna vez prop2 coincida, empuje el índice en la matriz
const a = [{ prop1: "abc", prop2: "yutu" }, { prop1: "bnmb", prop2: "yutu" }, { prop1: "zxvz", prop2: "qwrq" } ]; const indArr = []; for (let i = 0; i < a.length; i++) { if (a[i].prop2 === 'yutu') { indArr.push(i) } } console.log(indArr);