你会使用哪个功能 - Javascript

时间:2017-02-12 14:36:42

标签: javascript coordinates

我是 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。

4 个答案:

答案 0 :(得分:2)

您可以使用另一个while结构作为seconde值。

&#13;
&#13;
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;
&#13;
&#13;

或者您可以使用source

  

for 语句创建一个循环,该循环由三个可选表达式组成,括在括号中并用分号分隔,后跟一个语句(通常是一个块语句),用于在循环。

&#13;
&#13;
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;
&#13;
&#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功能,如扩展语法和箭头功能。

&#13;
&#13;
str = [...Array(12)].reduce((s, _, i) =>
        s + [...Array(8)].reduce((ss, _, j) =>
              ss + (j + 1) + ',' + (i + 1) + "\n", ""),
      "");

console.log(str);
&#13;
&#13;
&#13;

我使用"\n"代替"<br>",以便它显示在控制台中。

实际上并没有使用它。它只是为了表现出不同的方式。我会在实践中使用嵌套循环。

玩得开心!

相关问题