【问题标题】:How can I wrap with a range of numbers? [duplicate]如何用一系列数字换行? [复制]
【发布时间】:2020-09-26 09:12:46
【问题描述】:

我想知道当我的数字列表达到 10 并且他的倍数直到 100 时,我该如何打破界限。
示例:1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
...
这是我到目前为止写的内容

var limit= 100;
var str= "";

for (var i =1; i<=limit; i++){
str += i+ "";
}
console.log(str);

【问题讨论】:

  • 在什么情况下?控制台输出?一个网页?还有什么?
  • 在控制台输出中

标签: javascript numbers line-breaks


【解决方案1】:

你也可以这样做:

var limit= 100;
var str= "";

for (var i = 1; i <= limit; ++i) {
    str += i + ((i % 10) ? " " : "\n");
}
console.log(str);

【讨论】:

  • @JacopoGiurgevich - 你知道,这正是我在回答中所做的,只是通过条件运算符而不是 if 语句应用。
【解决方案2】:

您可以使用余数运算符 (%) 来确定 i 是否是 10 的倍数,如下所示:

if (i % 10 === 0) {
    // Yes, it is
}

请注意,0 也会匹配,但您是从 1 开始的,所以没关系。

因此,在您的循环中,在¹输出项目之后,使用它来输出换行符(无论您使用的环境中的换行符是什么)。例如(为了清楚起见,我在数字之间添加了空格):

var limit= 100;
var str= "";

for (var i = 1; i <= limit; ++i) {
    str += i + " ";
    if (i % 10 === 0) {
        str += "\n";
    }
}
console.log(str);

¹它是之后,因为您从1 开始。如果您从 0 开始,那将是之前的(并且您需要在支票上使用 i !== 0 &amp;&amp;)。

【讨论】:

  • 抱歉,它不起作用:在 chrome 的控制台中它输出:1
    1 2
    1 2 3
    1 2 3 4
    1 2 3 4 5
    ...
  • @JacopoGiurgevich - 恕我直言,您一定没有像上面那样做,因为上面的可运行示例运行良好。
  • 是的,可能我做错了什么,我几乎是一个初学者,但我发现 Pranav Rustagi 的答案更清楚一些。这并不意味着我不感谢你,或者我不承认你的建议的重要性。
【解决方案3】:
let str = '';

for(let i =0; i < 100; i++ ) {
  const isWrap = (i > 0) && (i % 10 === 0);
  
  str += isWrap ? '\n' : ' ';
  str += (i+1);
}

console.log(str);

【讨论】:

  • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
【解决方案4】:

这是我的,使用 Array.from 制作数组并映射到分块(切片也可以用于分块)

const makeGrid = lim => Array.from(Array(lim+1).keys()) // make 101
  .slice(1) // drop the 0
  .map(i => i%10===0?` ${i}\n`:` ${i}`) // map to have a newline
  .join("");
console.log(makeGrid(100));

【讨论】:

    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多