如何将这个C#代码片段转换为Javascript
本文关键字:片段 转换 Javascript 代码 | 更新日期: 2023-09-27 18:00:40
我需要了解Javascript如何处理新的字符串对象,就像下面的C#代码一样
var UpperBound = 14;
for (int i = 0; i < UpperBound; i++) {
Console.WriteLine(new string('*', i));
}
Console.ReadLine();
这就是我在Javascript中的做法:
var upperBound = 14;
for(var i=0;i<upperBound;i++){
console.log(new string("*", i));
}
我是一个编程新手,我从javascript开始,所以如果我问这个问题显得很愚蠢,请原谅并帮助我解释。。感谢
JS中没有new string("*", i)
的等价项。你需要自己重复。
一个方便的破解方法是Array(i + 1).join("*")
,但我认为它不是很有效,因为它需要构造数组。最好的方法可能是循环并连接。
您的代码很好,除了以下部分:
new string("*", i)
JS的语法不正确。您需要用另一种方式创建字符串。
这就是您应该如何在JavaScript中创建具有重复字符的字符串
我应该注意,String.prototype.repeat
是ECMAScript 6的一部分。
var upperBound = 14;
for(var i=0;i<upperBound;i++)
{
document.write('*'.repeat(i));
document.write("<br/>");
}
在此之前,您应该使用另一种方法,比如在for
循环中手动生成这个字符串,如下所示:
function repeatString(ch, t)
{
var res = '';
for (var i = 0; i < t; i++) res += ch;
return res;
}
var upperBound = 14;
for(var i=0;i<upperBound;i++)
{
document.write(repeatString('*', i));
document.write("<br/>");
}
还有其他一些方法和技巧。你可以在上面阅读这个StackOverflow主题。
我建议您在尝试编写JavaScript之前先阅读一篇关于它的好教程。
C#和JavaScript在所有方面都是非常不同的语言。你不能只拿一个C#代码,改变一个语法,然后认为它会起作用。
我想结合两种解决方案,所以(最好的选择是使用es6垫片)这里有一个polyfill(从这里借用)
if (!String.prototype.repeat) {
String.prototype.repeat = function(count) {
'use strict';
if (this == null) {
throw new TypeError('can''t convert ' + this + ' to object');
}
var str = '' + this;
count = +count;
if (count != count) {
count = 0;
}
if (count < 0) {
throw new RangeError('repeat count must be non-negative');
}
if (count == Infinity) {
throw new RangeError('repeat count must be less than infinity');
}
count = Math.floor(count);
if (str.length == 0 || count == 0) {
return '';
}
// Ensuring count is a 31-bit integer allows us to heavily optimize the
// main part. But anyway, most current (August 2014) browsers can't handle
// strings 1 << 28 chars or longer, so:
if (str.length * count >= 1 << 28) {
throw new RangeError('repeat count must not overflow maximum string size');
}
var rpt = '';
for (;;) {
if ((count & 1) == 1) {
rpt += str;
}
count >>>= 1;
if (count == 0) {
break;
}
str += str;
}
return rpt;
}
}
用途:
var upperBound = 14;
for(var i=0;i<upperBound;i++){
console.log("*".repeat(i));
}