在JavaScript中,无法使用for循环和单独变量将一个数组的元素设置为等同于单独数组中的元素

在JavaScript中,无法使用for循环和单独变量将一个数组的元素设置为等同于单独数组中的元素,javascript,for-loop,numbers,Javascript,For Loop,Numbers,我是JS新手,所以我不是100%了解与程序相关的所有不同函数和方法。我想用另一个数组中的元素替换其中一个数组中的元素,用于我正在开发的支票书写程序。以下是我目前拥有的代码: loop = true units = ['zero ', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', '

我是JS新手,所以我不是100%了解与程序相关的所有不同函数和方法。我想用另一个数组中的元素替换其中一个数组中的元素,用于我正在开发的支票书写程序。以下是我目前拥有的代码:

    loop = true
    units = ['zero ', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
    tens = ['', '', 'twenty ', 'thirty ', 'fourty ', 'fifty ', 'sixty ', 'seventy ', 'eighty ', 'ninety '];
    bigs = ['', 'hundred ', 'thousand ', 'million ', 'billion '];
    while (loop) {
        userNum = prompt("Enter your money quantity to 2 decimal places \neg: 123.45\n      100\n      3336745.90");
        if (userNum == parseInt(userNum) || userNum == (Math.floor(userNum * 100) / 100).toFixed(1) || userNum == (Math.floor(userNum * 100) / 100).toFixed(2)) {
            loop = false;
        } else {
            alert("That is not a valid number.");
        }
    }
    userNum = userNum.toString().split("");

    if (userNum.includes(".") == true) {
        a = userNum.indexOf(".");
        userNum[a] = "and";
    }

    for (i = 0; i > userNum.length; i++);
    if (Number.isInteger(userNum.lastIndexOf())) {
        num = userNum.indexOf(i);
        userNum.indexOf(i) = units.indexOf(num);
        console.log(userNum.indexOf(i));
    }
    alert(userNum);

我想将“userNum”的每个元素替换为它们各自对应的“units”,这样我的代码将在alert语句中将每个数字作为一个单词输出到控制台。76.65变成了七、六、六、五。目前,它只输出数字并将小数点转换为and,这让我相信代码只是跳过了整个代码块。是我的语法错误了,还是我在更改元素时走错了方向?(顺便说一句,我正在使用VSCode,如果这会影响任何事情的话)

代码中有几个问题:

  • userNum已经是一个字符串,无需将其转换为字符串

  • 您的for循环条件错误,应该是i小于nums.length
    i
    在for循环的末尾有分号(;),这是错误的

  • LastIndexOf(),方法需要搜索的值是必需的参数,语法为

    string.lastIndexOf(searchvalue,start)

  • userNum.indexOf(i)=units.indexOf(num)。这项作业中有一个问题

  • 你也不需要单位数组直到十九,零九是好的

  • 经过一些修改的工作解决方案:

    var循环=true
    var-userNum;
    变量单位={};
    单位[0]=“零”;
    单位[1]=“一”;
    单位[2]=“2”;
    单位[3]=“三”;
    单位[4]=“四”;
    单位[5]=“五”;
    单位[6]=“六”;
    单位[7]=“七”;
    单位[8]=“八”;
    单位[9]=“九”;
    while(循环){
    userNum=prompt(“输入您的货币数量,小数点后两位\neg:123.45\n 100\n 3336745.90”);
    如果(userNum==parseInt(userNum)| | userNum==(数学地板(userNum*100)/100).toFixed(1)| | userNum==(数学地板(userNum*100)/100.toFixed(2)){
    循环=假;
    }否则{
    警报(“该数字无效”);
    }
    }
    userNum=userNum.split(“”);
    if(userNum.includes(“.”){
    a=userNum.indexOf(“.”);
    userNum[a]=“和”;
    }
    对于(i=0;i警报(userNum)代码中有几个问题:

  • userNum已经是一个字符串,无需将其转换为字符串

  • 您的for循环条件错误,应该是i小于nums.length
    i
    在for循环的末尾有分号(;),这是错误的

  • LastIndexOf(),方法需要搜索的值是必需的参数,语法为

    string.lastIndexOf(searchvalue,start)

  • userNum.indexOf(i)=units.indexOf(num)。这项作业中有一个问题

  • 你也不需要单位数组直到十九,零九是好的

  • 经过一些修改的工作解决方案:

    var循环=true
    var-userNum;
    变量单位={};
    单位[0]=“零”;
    单位[1]=“一”;
    单位[2]=“2”;
    单位[3]=“三”;
    单位[4]=“四”;
    单位[5]=“五”;
    单位[6]=“六”;
    单位[7]=“七”;
    单位[8]=“八”;
    单位[9]=“九”;
    while(循环){
    userNum=prompt(“输入您的货币数量,小数点后两位\neg:123.45\n 100\n 3336745.90”);
    如果(userNum==parseInt(userNum)| | userNum==(数学地板(userNum*100)/100).toFixed(1)| | userNum==(数学地板(userNum*100)/100.toFixed(2)){
    循环=假;
    }否则{
    警报(“该数字无效”);
    }
    }
    userNum=userNum.split(“”);
    if(userNum.includes(“.”){
    a=userNum.indexOf(“.”);
    userNum[a]=“和”;
    }
    对于(i=0;i警报(userNum)首先,我想指出代码中的一些错误:-

  • 你有一个
    在for循环之后。除了
    alert
    方法外,您必须将
    下的所有语句置于大括号内
  • indexOf
    方法返回数组中所提供元素的索引。所以,你不需要它
  • 您的
    if
    条件错误,因为
    userNum
    数组中的所有元素都已经是字符串,因此它将始终返回false
  • for
    循环中,它也将是
    i
  • 我已经编辑了代码。你可以在这里查阅:-

    loop=true
    单位=[‘零’、‘一’、‘二’、‘三’、‘四’、‘五’、‘六’、‘七’、‘八’、‘九’、‘十’、‘十一’、‘十二’、‘十三’、‘十四’、‘十五’、‘十六’、‘十七’、‘十八’、‘十九’];
    十=[''、'二十'、'三十'、'四十'、'五十'、'六十'、'七十'、'八十'、'九十'];
    bigs=[''‘百’、‘千’、‘百万’、‘十亿’];
    while(循环){
    userNum=prompt(“输入您的货币数量,小数点后两位\neg:123.45\n 100\n 3336745.90”);
    如果(userNum==parseInt(userNum)| | userNum==(数学地板(userNum*100)/100).toFixed(1)| | userNum==(数学地板(userNum*100)/100.toFixed(2)){
    循环=假;
    }否则{
    警报(“该数字无效”);
    }
    }
    userNum=userNum.toString().split(“”);
    if(userNum.includes(“.”)=true){
    a=userNum.indexOf(“.”);
    userNum[a]=“和”;
    }
    对于(i=0;i