我有下面这段代码,但不太理解输出
function repeatStringNumTimes(str, num) {
if (num <0) {
return ""
} else {
return Array(num+1).join(str)
}
}
console.log(repeatStringNumTimes("abc", 3));
我本来希望输出是“abcabcabc”,但如果我在JS Bin中使用console.log(repeatStringNumTimes(“abc”,3)),它会生成“abcabc”?
如果我指定数组(3)-它不会连接字符串3次吗?为什么在这个例子中只有2次?
3条答案
按热度按时间ukdjmx9f1#
如果我指定数组(3)-它不会连接字符串3次吗?为什么在这个例子中只有2次?
注意,
'abc'
是3个元素之间联接的分隔符,因此它出现两次,而不是3次。因此,如果创建一个空数组,它将显示
'abc'
两次,分隔3个空字符串:另请注意,存在
String.repeat()
dgiusagp2#
看,当我运行你的代码时,正确的输出出现了,所以你的代码没有错误,当你指定Array(3)时,输出将是“abcabc”,你的代码运行良好
kx1ctssn3#
如果你看一下
Array#join
的文档,它会根据join方法中传递的分隔符来连接数组项。理想情况下,它不会考虑数组中第一个元素之前和最后一个元素之后的连接。当你想用字符串填充数组时,Correct方法是
Array#fill
,它将数组中的所有元素都更改为静态值,从开始索引(默认为0
)到结束索引(默认为array.length
),然后在Array.join()
方法的帮助下连接数组中的元素。