【问题标题】:Javascript Integer Array ErrorJavascript整数数组错误
【发布时间】:2018-08-10 08:53:31
【问题描述】:

我正在制作一个接受用户输入的函数,并且必须将其显示为 7 个字符,即如果输入 42.54,它将显示 0004254。我的问题是我正在获取一个整数并将其应用于导致未定义的数组应用 0 时出错

function BackDataDefaultInput() {
// Balance
    var count;
    var newNum = "";
    var balanceText = document.getElementById('balanceNumBox').value;
    count = balanceText.length;

while (count > 0 && count < 7) {
    newNum += '0';
    count++
}
var formattedBalance = parseInt(balanceText, 10) * 100;
for (var i = 0; i < balanceText.length; i++) {
    formattedBalance[i] = new Array();
    // Error here showing as undefined for formattedBalance[i]
     newNum += formattedBalance[i];
}

在我不得不将其乘以 100 以获得正确的格式之前,此代码已正常工作。因为我只是附加两个字符串。有人可以帮我想一个解决方案吗?

【问题讨论】:

    标签: javascript arrays integer undefined


    【解决方案1】:

    基元(如数字)是不可变的;如果你有

    var formattedBalance = parseInt(balanceText, 10) * 100;
    

    您无法继续重新分配索引属性,例如

    formattedBalance[i] = new Array();
    

    使用正则表达式删除(可能的)句点并使用padStart 可能会更容易,而不是弄乱数组:

    function BackDataDefaultInput() {
      const balanceText = '42.54'; // document.getElementById('balanceNumBox').value;
      console.log(
        balanceText
          .replace(/\./g, '')
          .padStart(7, '0')
      );
    }
    BackDataDefaultInput();

    【讨论】:

      【解决方案2】:

      尝试使用以下功能。

      var balanceText = "42.54"; //document.getElementById('balanceNumBox').value;
      var formattedBalance = balanceText * 100;
      
      function formatInteger(str, max) {
        str = str.toString();
        return str.length < max ? formatInteger("0" + str, max) : str;
      }
      
      console.log(formatInteger(formattedBalance, 7));

      【讨论】:

      • 我现在不再得到“未定义”。但是 42.54 的输出是 0004200,而 4254 是 0425400。所以它似乎附加了两个最后的 0。我有一个输入掩码函数,最多只能接受 0000.00,即 4 个数字和 2 个小数,如果这有什么不同的话
      • 更改“var formattedBalance = parseInt(balanceText, 10) * 100;”将代码写入“var formattedBalance = balanceText * 100;”
      【解决方案3】:

      回答我的问题,以防对浏览此页面的任何人有所帮助:

      function BackDataDefaultInput() {
          var balanceText = document.getElementById('balanceNumBox').value;
          var balance = parseFloat(balanceText) * 100;
          balanceText = String(balance);
      
      while (balanceText.length > 0 && balanceText.length < 7) {
          balanceText = '0' + balanceText;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-08
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 2014-03-31
        • 2015-03-29
        相关资源
        最近更新 更多