为什么Array(1).join(' str')输出为空?

时间:2017-08-04 07:11:30

标签: javascript

为什么下面的代码块不输出字符串?

我希望在传递num = 1时它应该显示abc。

我在这里缺少什么?



function repeatStringNumTimes(str, num) {
  return Array(num).join(str);
}
console.log(repeatStringNumTimes("abc", 1));




3 个答案:

答案 0 :(得分:9)

Array#join至少需要两个带分隔符的元素,因为一个元素只是转换为字符串而且不需要任何 glue

function repeatStringNumTimes(str, num) {
    return Array(num + 1).join(str);
}
console.log(repeatStringNumTimes("abc", 1));

答案 1 :(得分:2)

如果您只需要重复一次字符串n次,请使用ES6的String.repeat,如下所示:

'myString'.repeat(repeatTimes);

或基于阵列的解决方案(不推荐用于您的问题):

new Array(repeatTimes).fill('myString').join('');

如果您需要ES5解决方案,请使用lodash fn repeat

_.repeat('abc', 2);

答案 2 :(得分:-1)

正确的方法应该是

str.repeat(num)