首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript整数数组错误

Javascript整数数组错误
EN

Stack Overflow用户
提问于 2018-08-10 08:53:31
回答 3查看 48关注 0票数 1

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

代码语言:javascript
运行
AI代码解释
复制
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以获得正确的格式之前,这段代码是有效的。因为我只是追加了两个字符串。有没有人能帮我想个办法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-10 08:57:03

原语(如数字)是不可变的;如果您有

代码语言:javascript
运行
AI代码解释
复制
var formattedBalance = parseInt(balanceText, 10) * 100;

您不能继续重新分配索引属性,如

代码语言:javascript
运行
AI代码解释
复制
formattedBalance[i] = new Array();

用正则表达式去掉(可能的)句点并使用padStart可能比乱用数组更容易:

代码语言:javascript
运行
AI代码解释
复制
function BackDataDefaultInput() {
  const balanceText = '42.54'; // document.getElementById('balanceNumBox').value;
  console.log(
    balanceText
      .replace(/\./g, '')
      .padStart(7, '0')
  );
}
BackDataDefaultInput();

票数 2
EN

Stack Overflow用户

发布于 2018-08-10 09:14:21

尝试使用以下函数。

代码语言:javascript
运行
AI代码解释
复制
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));

票数 0
EN

Stack Overflow用户

发布于 2018-08-10 14:47:18

回答我的问题,以防它对遇到这个页面的任何人有帮助:

代码语言:javascript
运行
AI代码解释
复制
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;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51782627

复制
相关文章

相似问题

领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档