我正在尝试编写一些代码,根据输入数字自动生成一些ASCII文本。基本上,输入到函数的数字将被返回,因为数字"被放大"在ascii文本中。所以输入0123456789输出:
-**----*--***--***---*---****--**--****--**---**--
*--*--**-----*----*-*--*-*----*-------*-*--*-*--*-
*--*---*---**---**--****-***--***----*---**---***-
*--*---*--*-------*----*----*-*--*--*---*--*----*-
-**---***-****-***-----*-***---**---*----**---**--
--------------------------------------------------
我逐行将每个数字编码成一个数组,代码循环遍历每个数字输入的数组并构建组合的结束图像。生成部分似乎工作正常,但由于某种原因,我的结束变量在最后没有正确使用,主循环只处理输入的第一个数字然后停止。任何帮助是极大的赞赏! 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');
答案 0 :(得分:2)
您的结束变量是一个数组。 输出它只需将它与一个新行联合起来:
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');
// --*--***--***--
// -**-----*----*-
// --*---**---**--
// --*--*-------*-
// -***-****-***--