我是 var getChar = function(callback) {
tesseract.process('2.jpg', function(err, text) {
var foo = "asd"; // For a test.
foo = "bef"; // For a test.
console.log("1: "+foo); // This works.
console.log("2: "+text); // This works and gives right result. Why only this?
text = text.trim();
text = text.toUpperCase();
callback(text);
});
};
var getNums = function (callback) {
getChar(function(data){
/* This data stack 2 */
callback(data);
});
};
function getNum(){
getNums(function(data){
var $ = require("jquery")(window);
var charNums = [
{ char: 'A', nums: '1234'},
{ char: 'B', nums: '2345'},
{ char: 'C', nums: '3456'},
{ char: 'D', nums: '4567'},
{ char: 'E', nums: '5678'},
{ char: 'F', nums: '6789'},
{ char: 'G', nums: '7890'},
{ char: 'H', nums: '0987'},
{ char: 'J', nums: '8765'},
{ char: 'K', nums: '7654'},
{ char: 'L', nums: '6543'},
{ char: 'M', nums: '5432'},
{ char: 'N', nums: '4321'},
{ char: 'P', nums: '3210'},
{ char: 'R', nums: '2109'},
{ char: 'S', nums: '1098'}
];
var chars = $.grep(charNums, function(e){ return e.char === data; });
if (chars.length == 0) {
} else {
var result = chars[0].nums;
}
console.log("Character: ", data);
console.log("Number:", result);
// DO SOMETHING
});
}
getNum();
的新手,我有以下代码:
javascript
打印出<p id="demo"></p>
<script>
var text = "";
var x = 1;
var y = 1;
while(x < 9) {
text += "<br>" + x +"," + y;
x++;
}
document.getElementById("demo").innerHTML = text;
</script>
:
coordinates
问题是一旦达到8,1你会用什么来继续:
1,1
2,1
3,1
4,1
5,1
6,1
7,1
8,1
然后 1,3 依此类推,直到达到3,4(这可能是变数)然后停止。
在一个理想的世界中,我能够达到最高8,12。
答案 0 :(得分:2)
您可以使用另一个while结构作为seconde值。
var text = "",
x,
y = 1;
while (y <= 12) {
x = 1;
while (x <= 8) {
text += "<br>" + x + "," + y;
x++;
}
y++;
}
document.getElementById("demo").innerHTML = text;
&#13;
<p id="demo"></p>
&#13;
或者您可以使用source
for
语句创建一个循环,该循环由三个可选表达式组成,括在括号中并用分号分隔,后跟一个语句(通常是一个块语句),用于在循环。
var text = "",
x,
y;
for (y = 1; y <= 12; y++) {
for (x = 1; x <= 8; x++) {
text += "<br>" + x + "," + y;
}
}
document.getElementById("demo").innerHTML = text;
&#13;
<p id="demo"></p>
&#13;
答案 1 :(得分:2)
像这样写:
var text = "", x,y;
for (y=1; y<= 12; y++) {
for (x=1; x<= 8; x++) {
text += "<br>" + x + "," + y;
}
}
document.getElementById("demo").innerHTML = text;
<p id="demo"></p>
答案 2 :(得分:0)
你可以嵌套循环。这里最好的解决方案是使用两个嵌套的for
循环:
let text = '';
for (let y = 1; y <= 12; ++y) {
for (let x = 1; x <= 8; ++x) {
text += "<br>" + x + "," + y;
}
}
document.getElementById("demo").innerHTML = text;
<output id="demo"></output>
正如您所看到的,它会在8,12
停留,完全符合您的要求:)
您可以找到有关不同types of loops and iteration on MDN的更多信息。
答案 3 :(得分:0)
这是一个有趣的解决方案。除了出于教育目的,这不是我会做的,所以把它当作它的目的。
它在内部和外部数组上使用Array.prototype.reduce
。每次迭代时内部数组的累积结果被添加到外部数组的累加器中。内部缩减是添加所有实际数据的地方。外部减少只会累积内部结果。
它使用了一些ECMAScript 2015功能,如扩展语法和箭头功能。
str = [...Array(12)].reduce((s, _, i) =>
s + [...Array(8)].reduce((ss, _, j) =>
ss + (j + 1) + ',' + (i + 1) + "\n", ""),
"");
console.log(str);
&#13;
我使用"\n"
代替"<br>"
,以便它显示在控制台中。
实际上并没有使用它。它只是为了表现出不同的方式。我会在实践中使用嵌套循环。
玩得开心!