Estoy trabajando con Javascript y tengo la siguiente matriz de objetos:
const offersStep = [ {a: 1, price: 67.10}, {a: 3, price: 88.20}, {a: 5, price: 88.20}, {a: 7, price: 57.10}, {a: 13, price: 57.10}, {a: 15, price: 57.10}, {a: 29, price: 57.10}, {a: 30, price: 57.10}, ]
¿Qué y cómo tengo que hacer, para almacenar en una nueva matriz , esos objetos, ignorando aquellos cuyo price
de utilería tiene un valor que ya está almacenado en la nueva matriz?
Rendimiento esperado:
offers = [ {a: 1, price: 67.10}, {a: 3, price: 88.20}, {a: 7, price: 57.10} ]
Puede almacenar los objetos en un mapa descifrado de su price
. Después de haber almacenado precios únicos, distribuya el iterador de valores () del Mapa en una nueva matriz para obtener su resultado.
const offersStep = [ {a: 1, price: 67.10}, {a: 3, price: 88.20}, {a: 5, price: 88.20}, {a: 7, price: 57.10}, {a: 13, price: 57.10}, {a: 15, price: 57.10}, {a: 29, price: 57.10}, {a: 30, price: 57.10}, ]; function filterOffers(offers) { let offersByPrice = new Map(); for (let offer of offers) { if (!offersByPrice.has(offer.price)) { // Store the offer offersByPrice.set(offer.price, offer); } } return [...offersByPrice.values()]; } console.log(filterOffers(offersStep));
Ocurrencia
Filtre la matriz original, controlando los precios encontrados hasta el momento por medio de un conjunto.
Código
const offersStep = [ {a: 1, price: 67.10}, {a: 3, price: 88.20}, {a: 5, price: 88.20}, {a: 7, price: 57.10}, {a: 13, price: 57.10}, {a: 15, price: 57.10}, {a: 29, price: 57.10}, {a: 30, price: 57.10} ]; let offer , nset_prices = new Set() ; offer = offersStep.filter ( po_item => { let b_ok = !nset_prices.has(po_item.price) ; if (b_ok) { nset_prices.add(po_item.price) } return b_ok; }); console.log(offer);
¡Déjame si el código te funciona!
const offersStep = [ { a: 1, price: 67.1 }, { a: 3, price: 88.2 }, { a: 5, price: 88.2 }, { a: 7, price: 57.1 }, { a: 13, price: 57.1 }, { a: 15, price: 57.1 }, { a: 29, price: 57.1 }, { a: 30, price: 57.1 }, ]; let tempOffers = {}; offersStep.forEach((eachObj) => { const { price } = eachObj; if (!tempOffers[price]) { tempOffers[price] = eachObj; } }); const offers = Object.values(tempOffers); console.log("offers are", offers);