javascript - For 循环在 1 次循环后停止

标签 javascript for-loop ascii

我正在尝试编写一些代码来根据输入数字自动生成一些 ASCII 文本。基本上,输入到该函数的数字将以 ascii 文本中“放大”的数字形式返回。所以输入 0123456789 wold 输出:

-**----*--***--***---*---****--**--****--**---**--
*--*--**-----*----*-*--*-*----*-------*-*--*-*--*-
*--*---*---**---**--****-***--***----*---**---***-
*--*---*--*-------*----*----*-*--*--*---*--*----*-
-**---***-****-***-----*-***---**---*----**---**--
--------------------------------------------------

我将每个数字逐行编码到一个数组中,代码循环遍历每个数字输入的数组,并构建组合的最终图像。生成部分似乎工作正常,但由于某种原因,我的结束变量在最后无法正确使用,并且主循环仅处理输入的第一个数字然后停止。任何帮助是极大的赞赏! http://jsfiddle.net/dmcuj2z5/

function printNums(line){
    var nums = [['12','03','03','03','12'],['2','12','2','2','123'],['012','3','12','0','0123'],['012','3','12','3','012'],['1','03','0123','3','3'],['0123','0','012','3','012'],['12','0','012','03','12'],['0123','3','2','1','1'],['12','03','12','03','12'],['12','03','123','3','12']];

    var answer = ['','','','','',''];
    var allowed = '0123456789';
    for(var i=0;i<line.length;i++){
        var num = line[i];
        if(allowed.indexOf(num) !== -1){
            for(var l=0;l<6;l++){    
                var print = '';
                for(var c=0;c<5;c++){
                    if(nums[num][l].indexOf(c) !== -1){
                        print += '*';
                    }else{
                        print += '-';
                    }
                }
               answer[l] += print;
            }
        }
    }
    alert(answer);
}

printNums('123');

最佳答案

你的最终变量是一个数组。 要输出它,只需将其与新行连接起来:

function printNums(line){
    var nums = [['12','03','03','03','12'],['2','12','2','2','123'],['012','3','12','0','0123'],['012','3','12','3','012'],['1','03','0123','3','3'],['0123','0','012','3','012'],['12','0','012','03','12'],['0123','3','2','1','1'],['12','03','12','03','12'],['12','03','123','3','12']];

    var answer = ['','','','','',''];
    var allowed = '0123456789';
    for(var i=0;i<line.length;i++){
        var num = line[i];
        if(allowed.indexOf(num) !== -1){
            for(var l=0;l<5;l++){    
                var print = '';
                for(var c=0;c<5;c++){
                    if(nums[num][l].indexOf(c) !== -1){
                        print += '*';
                    }else{
                        print += '-';
                    }
                }
               answer[l] += print;
            }
        }
    }
    console.log(answer.join("\n"));
}

printNums('123');

// --*--***--***--
// -**-----*----*-
// --*---**---**--
// --*--*-------*-
// -***-****-***--

关于javascript - For 循环在 1 次循环后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26225998/

相关文章:

javascript - ReactJS + MongoDB + NodeJS/ExpressJS : What is process. nextTick(function() { throw err; });?

javascript - 将动态网页存储为对象的最佳方式是什么?

javascript - 在 jQuery 中创建新元素的问题

java - 循环遍历数组并以特定方式列出

javascript - 如何通过数组循环创建具有 innerHTML 值/文本节点的表格单元格

javascript - for循环跳过间隔javascript

Ruby:用十六进制表示替换 ascii 范围内的某些字符

javascript - 在 javascript 上从真正嵌套的 json 数组中获取值

python - 如何通过函数按 ASCII 降序对单个字符串输出进行排序?

pdf - Ghostscript 将 pdf 转换为文本文件,输出不可读