javascript - Array() 方法的意外输出

标签 javascript arrays string

我在下面有这段代码,但不太理解输出

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”?

如果我指定 Array(3) - 它不会将字符串连接 3 次吗?为什么在这种情况下只有 2 个?

最佳答案

If I specify Array(3) - Would it not concatenate the string 3 times? Why only 2 in this instance?

console.log([1,2,3].join('abc'))
// outputs 1abc2abc3

请注意,'abc' 是 3 个元素之间连接的分隔符,因此它出现了两次,而不是 3 次。

因此,如果您创建一个空数组,它会显示两次 'abc',分隔 3 个空字符串:

console.log(Array(3).join('abc'))
// outputs abcabc

另请注意,还有 String.repeat()

console.log('abc'.repeat(3))
// outputs abcabcabc

关于javascript - Array() 方法的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75286188/

相关文章:

arrays - Matlab,在两个数组中找到公共(public)值

ios - Swift 4 如何将自定义对象数组转换为 JSON

javascript - 如何居中 Dijit Select 小部件?

javascript - PHP - file_get_contents 使用正则表达式获取 JSON,但无法解码 JSON(获取 JSON_ERROR_SYNTAX)

javascript - JS (ES6) : Reduce array based on object attribute

c - 用 C 解析字符串 - 什么是正确的工具?

java - UTF-8 和 ISO-8859-1 不适用于 Java 中的欧洲字符集解码

string - 为什么这个最长公共(public)子序列的 DP 解决方案可以正常工作?

javascript - 改进我们的 JavaScript 错误报告

javascript - Phonegap应用程序使用localstorage函数错误