Tengo una variedad de objetos. Quiero recorrer esa matriz y verificar si un elemento coincide con un criterio, usando el método de reducción de javascript:
const arr = [{ value: 'test', label: 'Test' }, { value: 'car', label: 'Car' }, ] const res = arr.reduce((acc, item) => { if (item.value) { acc.push({ element: item.label, id: item.value, }) } if(item.value !== 'car') { acc.push({element: 'here', id: 'here'}) } return acc }, []) console.log(res) Usando if(item.value !== 'car') { acc.push({element: 'here', id: 'here'}) } trato de inspeccionar si en mi lista no hay ningún valor que no sea igual a 'auto', luego agregue ese objeto, pero agrega incluso si en la lista existe el título car , pero lo que quiero lograr es ver si en la matriz no hay ningún elemento que sea igual a car , solo después de eso para agregar ese objeto. ¿Cómo lograr eso sin usar find() pero solo reduce()?
Ejemplos: 1. Si verifico el título del car , entonces ese objeto no debe agregarse. 2. Si marco el título 'desconocido', entonces ese objeto debe agregarse.
Según entendí, solo necesita filtrar por algunos elementos (no elementos del automóvil). De esta manera, no necesita usar "reductor", puede usar "filtro". Por favor, verifique el código a continuación:
const arr = [{ value: 'test', label: 'Test' }, { value: 'car', label: 'Car' }, ]; // Using filter (recommended in your case) // const notCarElements = arr.filter(elem => elem.value !== 'car'); // Using reducer const notCarElements = arr.reduce((acc, item) => { if (item.value === 'car') return acc; acc.push(item); return acc; }, []); console.log(notCarElements);