为了账号安全,请及时绑定邮箱和手机立即绑定

代码“new Array(count + 1).join(string)”是什么意思?

代码“new Array(count + 1).join(string)”是什么意思?

HUWWW 2023-01-06 16:09:43

我有一个代码 在字符串或计数中打印 aaaa 错误。字符串或计数错误。字符串或计数错误。


function repeat_string(string, count) 

  {

    if ((string == null) || (count < 0) || (count === Infinity) || (count == null))

      {

        return('Error in string or count.');

      }

        // Floor count.

    return new Array(count + 1).join(string);

  }


console.log(repeat_string('a', 4));

console.log(repeat_string('a'));

console.log(repeat_string('a', -2));

console.log(repeat_string('a', Infinity));

但我不明白为什么有 4 次,即 return new Array(count + 1).join(string); 做??


查看完整描述

3 回答

?
偶然的你

TA贡献1601条经验 获得超3个赞

// creates a new array of the specified length,

// filled with undefined

const arr = new Array(3);


// [undefined, undefined, undefined]


// join the elements of the array, using ‘x’ to connect them:

arr.join(‘x’);


// undefined + ‘x’ + undefined + ‘x’ + undefined

// ‘xx’


查看完整回答
反对 回复 2023-01-06
?
慕桂英546537

TA贡献1598条经验 获得超10个赞

new Array(count + 1)给你一个 count + 1 长度的空数组。

array.join(string)将数组的内容与string每个元素之间的 in 连接起来。

在您的情况下,new Array(count + 1).join(string)返回 aaaa,因为有 5 个空格,每个空格之间有一个“a”。


查看完整回答
反对 回复 2023-01-06
?
芜湖不芜

TA贡献1544条经验 获得超7个赞

数组构造器

Array() 构造函数 - JavaScript | MDN

句法

新数组(数组长度)

arrayLength 如果传递给 Array 构造函数的唯一参数是 0 到 2^32-1(含)之间的整数,这将返回一个新的 JavaScript 数组,其 length 属性设置为该数字(注意:这意味着 arrayLength 空槽数组,而不是具有实际未定义值的插槽)。如果参数是任何其他数字,则会抛出 RangeError 异常

new Array(4)是同一个空数组[,,,,]

加入

Array.prototype.join() - JavaScript | MDN

join() 方法通过连接数组(或类似数组的对象)中的所有元素来创建并返回一个新字符串,以逗号或指定的分隔符字符串分隔。


回应评论的附录

那么任何其他不大于 232 的值都会给我范围错误吗?

对不起。因为权力是用HTML表达的,所以我没有很好地复制和粘贴权力。我将 232 固定为 2^32。

正如@ray hatfield 评论的那样,遍历数组的不是 232 。

您可以通过执行以下操作来确认错误:

new Array(Infinity)

VM67:1 未捕获的 RangeError:数组长度无效:1:1

new Array(2**32)

VM337:1 未捕获的 RangeError:数组长度无效:1:1

并且下面的代码不会产生错误。

new Array(2**32-1)


查看完整回答
反对 回复 2023-01-06
  • 3 回答
  • 0 关注
  • 21 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信