in Vue3 composition API, I have 2 arrays const fruitsSellerPrice = [ {id: 1, name: apple, priceSeller: '10.90'}, {id: 2, name: banana, priceSeller: '11.20'}, {id: 3, name: orange, priceSeller: '12.30'}, {id: 4, name: framboesa, priceSeller: '13.90'}}]; const fruitsBuyPrice = [ {id: 1, name: apple, priceBuy: '6.90'}, {id: 2, name: banana, priceBuy: '6.20'}, {id: 3, name: orange, priceBuy '7.30'}, {id: 4, name: framboesa, priceBuy: '16.90'}}];Me gustaría saber cómo puedo hacer un filtro "inteligente" que devuelva la diferencia por "nombre" y ordene de mayor a menor o de menor a mayor, precioVenta - PrecioCompra...
tengo una funcion con lineas muy grandes..algo anda mal....
// find all seller items, and check what the value is in the buy array is and respond with the difference. const response = fruitsSellerPrice.map( item => ({ ...item, diff: Math.abs( Number( fruitsBuyPrice.find( buy=>buy.name === item.name).priceBuy) - Number(item.priceSeller).toFixed(2)) }) ).sort((a,b)=>b.diff-a.diff) // for asc, do a.diff - b.diffPrueba algo como el siguiente fragmento:
const fruitsSellerPrice = [{id: 1, name: 'apple', priceSeller: '10.90'},{id: 2, name: 'banana', priceSeller: '11.20'},{id: 3, name: 'orange', priceSeller: '12.30'},{id: 4, name: 'framboesa', priceSeller: '13.90'}] const fruitsBuyPrice = [{id: 1, name: 'apple', priceBuy: '6.90'},{id: 2, name: 'banana', priceBuy: '6.20'},{id: 3, name: 'orange', priceBuy: '7.30'},{id: 4, name: 'framboesa', priceBuy: '16.90'}] let sortOrder = true const res = fruitsSellerPrice.map(f => { return {...f, diff: Math.abs((Number(f.priceSeller) - Number(fruitsBuyPrice.find(u => u.id === f.id).priceBuy))).toFixed(2)} }).sort((a, b) => { return sortOrder ? a.diff - b.diff : b.diff - a.diff }) console.log(res)