【问题标题】:Best way to slice a string that is stored in an object对存储在对象中的字符串进行切片的最佳方法
【发布时间】:2022-01-21 18:06:04
【问题描述】:

我正在尝试对存储在对象中的字符串进行切片,但出现错误,因为我认为您不能对存储在对象中的值使用 .slice()

paidData.id 包含发票的id 并且是一个字符串,我已经通过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);

我遇到的错误

TypeError: Cannot read properties of undefined (reading 'slice')

【问题讨论】:

  • 您需要发布代码示例以获得具体帮助,但字符串只是一个字符串,无论它存储在哪里。
  • 我添加了代码。您可以看到我正在对paidData 进行映射并为每个对象呈现一个发票组件。我也尝试过字符串化,但效果不佳
  • 这看起来更像是组件生命周期问题,而不是字符串方法问题。
  • 我发布了我遇到的错误。您是否认为该方法可能试图在尚不存在的东西上运行?

标签: javascript reactjs string object


【解决方案1】:

字符串的位置无关紧要(在数组、对象或变量中)。可以正常切片:

var object = {id: '12345'};
console.log(object.id.slice(0,3)); // returns 123

【讨论】:

    【解决方案2】:

    您可以对任何字符串调用.slice() 方法,即使它存储在对象中。例如,这将是有效的 JS 代码:

    const obj = { str: "StackOverflow is good" }
    console.log(str.slice(0,12)) // "StackOverflow"
    

    但是,.slice() 不会 改变它被调用的字符串。 JS 没有为字符串提供.splice()(变异),所以你必须填充它。查看 this question 以获得良好的 polyfill。

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2014-07-08
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2012-11-20
      相关资源
      最近更新 更多