Tengo esta matriz ob objetos que necesito ordenar por su número
var products = [ { name: 'Gift Box', productNumber: '44', SKU: 'ABCD' }, { name: 'Tabletop Game', productNumber: '63', SKU: 'DEFG' }, { name: 'Poker Deck', productNumber: '25s', SKU: 'HIJK' }, { name: 'Box of chocolates', productNumber: '96p', SKU: 'LMNO' }, { name: 'Box of Swiss chocolates', productNumber: '96s', SKU: 'PQRS' }, { name: 'Gift card', productNumber: '81', SKU: 'TUVW' }]; Como puede ver, algunas de las propiedades de productNumber tienen una letra en ellas, y como tal, creo que no será tan fácil como simplemente hacer un products.sort((a, b) => parseInt(b.productNumber) - parseInt(a.productNumber)); , entonces, ¿cómo puedo resolver esto?
¿Simplemente haga coincidir la parte numérica primero?
const products=[{name:"Gift Box",productNumber:"44",SKU:"ABCD"},{name:"Tabletop Game",productNumber:"63",SKU:"DEFG"},{name:"Poker Deck",productNumber:"25s",SKU:"HIJK"},{name:"Box of chocolates",productNumber:"96p",SKU:"LMNO"},{name:"Box of Swiss chocolates",productNumber:"96s",SKU:"PQRS"},{name:"Gift card",productNumber:"81",SKU:"TUVW"}]; const toNum = obj => obj.productNumber.match(/\d+/)[0]; products.sort((a, b) => toNum(b) - toNum(a)); console.log(products);