¿Cuál es la mejor manera de obtener una matriz de cadenas de una matriz de objetos, donde puede especificar que solo tome el valor x donde el valor y = z?
Solución actual:
array = [{ "Item": "A", "Quantity": 2 }, { "Item": "B", "Quantity": 7 }, { "Item": "C", "Quantity": 7 }, { "Item": "D", "Quantity": 7 }, { "Item": "E", "Quantity": 7 }, { "Item": "F", "Quantity": 1 } ]; let filteredValues = array.map((el) => el.Quantity === 7 && el.Item); console.log(filteredValues)Gastos esperados:
["B", "C", "D", "E"]Resultado real:
[false, "B", "C", "D", "E", false]Información adicional: usando next.js/reaccionar
Primero, filtre y luego haga un mapa para obtener solo la propiedad que necesita.
const array = [ { Item: "A", Quantity: 2 }, { Item: "B", Quantity: 7 }, { Item: "C", Quantity: 7 }, { Item: "D", Quantity: 7 }, { Item: "E", Quantity: 7 }, { Item: "F", Quantity: 1 }, ]; let filteredValues = array .filter((el) => el.Quantity === 7 && el.Item) .map(({ Item }) => Item); console.log(filteredValues);O bien, puede usar reducir como se muestra a continuación.
const array = [ { Item: "A", Quantity: 2 }, { Item: "B", Quantity: 7 }, { Item: "C", Quantity: 7 }, { Item: "D", Quantity: 7 }, { Item: "E", Quantity: 7 }, { Item: "F", Quantity: 1 }, ]; let filteredValues = array.reduce((results, el) => { if (el.Quantity === 7 && el.Item) { results.push(el.Item); } return results; }, []); console.log(filteredValues);La mejor manera es usar Array.prototype.reduce
let data = [{ "Item": "A", "Quantity": 2 }, { "Item": "B", "Quantity": 7 }, { "Item": "C", "Quantity": 7 }, { "Item": "D", "Quantity": 7 }, { "Item": "E", "Quantity": 7 }, { "Item": "F", "Quantity": 1 } ]; const result = data.reduce((accumulator, current) => { return current["Quantity"] === 7 ? accumulator.concat(current["Item"]): accumulator; }, []) console.log(result);Use Array.filter() junto con Array.map()
Demostración de trabajo:
const array = [{ "Item": "A", "Quantity": 2 }, { "Item": "B", "Quantity": 7 }, { "Item": "C", "Quantity": 7 },{ "Item": "D", "Quantity": 7 },{ "Item": "E", "Quantity": 7 },{ "Item": "F", "Quantity": 1 }]; const filteredValues = array.filter((el) => el.Quantity === 7).map(elem => elem.Item); console.log(filteredValues)