Estoy tratando de dividir una cadena que está almacenada en un objeto, pero recibo un error porque creo que no puede usar .slice() en valores almacenados en un objeto.
paidData.id contiene el id de la factura y es una cadena, que he confirmado con typeof
function paidCard(paidData) { // Converting epoch seconds to human readable date const invoiceDue = moment.unix(data.due_date); const invoiceDueConverted = invoiceDue.format(' MMMM Do YYYY'); // Executing the function to convert amout due. const amountDue = decimalInsert(data.amount_due); const test = paidData.id; // <--- Logged this to console and it exists const result = test.slice(5) // <--- Cant read properties of undefined error here // Shows a notification when data from database has been loaded return( <InvoiceCard paid={true} invoiceStatusIconContainerColor='rgba(2,49,7,0.7)' invoiceStatusIconColor='#29DA7A' invoiceStatusText={paidData.status} customerName={paidData.customer_name} invoiceId={paidData.id} invoiceIdTextColor='#5C5C5C' customerEmail={paidData.customer_email} customerAddress={paidData.customer_address} invoiceAmount={amountDue} invoiceDateIconStatusColor='#FA3C3C' invoiceDateText={invoiceDueConverted} /> ); }; let invoiceData = [] let paidInvoiceData = [] // Render the invoices by mapping through state. if(data && paidData && Array.isArray(data) && Array.isArray(paidData)) { invoiceData = data.map(card); paidInvoiceData = paidData.map(paidCard);Error que estoy recibiendo
TypeError: Cannot read properties of undefined (reading 'slice')No importa dónde se encuentre la cadena (en una matriz, en un objeto o en una variable). Puedes cortarlo normalmente:
var object = {id: '12345'}; console.log(object.id.slice(0,3)); // returns 123Puede llamar al método .slice() en cualquier cadena, incluso si está almacenada en un objeto. Por ejemplo, este sería un código JS válido:
const obj = { str: "StackOverflow is good" } console.log(str.slice(0,12)) // "StackOverflow" Sin embargo, .slice() no muta la cadena a la que se llamó. JS no proporciona un .splice() (mutante) para cadenas, por lo que tendrá que polillenarlo. Echa un vistazo a esta pregunta para un buen polyfill.