this.join(这个)在javascript中是如何工作的?

this.join(这个)在javascript中是如何工作的?,javascript,arrays,Javascript,Arrays,在这方面说: String.prototype.times = function(count) { return count < 1 ? '' : new Array(count + 1).join(this); } "hello!".times(3); //"hello!hello!hello!"; "please...".times(6); //"please...please...please...please...please...please..." String.p

在这方面说:

String.prototype.times = function(count) {
    return count < 1 ? '' : new Array(count + 1).join(this);
}

"hello!".times(3); //"hello!hello!hello!";
"please...".times(6); //"please...please...please...please...please...please..."
String.prototype.times=函数(计数){
返回计数<1?'':新数组(计数+1)。加入(此);
}
《你好!》时报(3)//“你好!你好!你好!”;
“请……”次(6)//“请…请…请…请…请…请…请…”
它是如何在新语句中添加3次的?我对返回语句的理解也有些混乱。请告诉我我是否正确理解了这一点:

(if count < 1){
    return ''
} else {
    return new Array(count + 1).join(this) //This I don't understand.
(如果计数<1){
返回“”
}否则{
返回新数组(count+1)。join(this)//这个我不明白。

谢谢。

它生成一个给定长度的新数组,比如7。然后用一个字符串连接所有这些空项,最后将该字符串重复6次

通常:

[1,2,3].join("|") === "1|2|3"
然后使用长度为4的数组:

new Array(4).join("|") === "|||"
位于
字符串中。prototype
方法是指调用函数作为方法的字符串对象:

 "hello".bold(); //this would refer to a string object containing "hello" inside bold()

它生成一个给定长度的新数组,比如7。然后用一个字符串连接所有这些空项,最后将该字符串重复6次

通常:

[1,2,3].join("|") === "1|2|3"
然后使用长度为4的数组:

new Array(4).join("|") === "|||"
位于
字符串中。prototype
方法是指调用函数作为方法的字符串对象:

 "hello".bold(); //this would refer to a string object containing "hello" inside bold()

在本上下文中指的是受影响的字符串。因此,如果我调用
“hello”。times(5)
,则
将指的是
“hello”

该函数的工作原理是创建一个包含
count+1
元素的数组,有效地在元素之间形成
count
的“间隙”。然后将这些片段与
字符串粘在一起,从而使其
重复
计数


当然,如果被告知重复次数少于一次,则结果为空。
计数<1
检查是为了避免数组大小无效的错误。

在本上下文中,此
指的是受影响的字符串。因此,如果我调用
“hello.”次(5)
,则
将指的是
“hello”

该函数的工作原理是创建一个包含
count+1
元素的数组,有效地在元素之间形成
count
的“间隙”。然后将这些片段与
字符串粘在一起,从而使其
重复
计数


当然,如果被告知重复次数少于一次,则结果为空。
计数<1
检查是为了避免数组大小无效的错误。

此方法创建给定长度加1的新数组。例如:

"hello".times(3);
var arr = [ 'one', 'two', 'three' ];

var str = arr.join(', ');

// str is now "one, two, three"
将创建以下数组:

[undefined × 4]
然后,这些数组元素中的每一个都通过
.join(“hello”)
连接在一起。这基本上可以转化为:

"" /* undefined array element */ + "hello" /* join string */ + "" + "hello" ...


是的,您似乎理解了三元运算符。

此方法创建一个给定长度加1的新数组。例如:

"hello".times(3);
var arr = [ 'one', 'two', 'three' ];

var str = arr.join(', ');

// str is now "one, two, three"
将创建以下数组:

[undefined × 4]
然后,这些数组元素中的每一个都通过
.join(“hello”)
连接在一起。这基本上可以转化为:

"" /* undefined array element */ + "hello" /* join string */ + "" + "hello" ...

是的,您似乎理解了三元运算符。

.join()
将连接数组的单元格,从而生成字符串。例如:

"hello".times(3);
var arr = [ 'one', 'two', 'three' ];

var str = arr.join(', ');

// str is now "one, two, three"
因此,在你的
times
函数中,你说的是
新数组(count+1)
。因此,如果
count
是3,你实际上是在创建一个由4个单元格组成的空数组。然后你将这些空单元格与
this
(这是字符串)。

将连接数组的单元格,生成字符串。例如:

"hello".times(3);
var arr = [ 'one', 'two', 'three' ];

var str = arr.join(', ');

// str is now "one, two, three"
因此,在你的
times
函数中,你说的是
新数组(count+1)
。因此,如果
count
是3,你实际上是在创建一个由4个单元格组成的空数组。然后你将这些空单元格与
this
(即字符串)连接起来

重点是分隔符参数,而基数组仅包含未定义的成员值。上面的示例可以直接改写为:

[undefined,undefined,undefined,undefined].join("go ") + "Giants!";
使用Join运算符,每个数组成员在连接之前都会转换为字符串(在本例中为空字符串)

资料来源:

重点是分隔符参数,而基数组仅包含未定义的成员值。上面的示例可以直接改写为:

[undefined,undefined,undefined,undefined].join("go ") + "Giants!";
使用Join运算符,每个数组成员在连接之前都会转换为字符串(在本例中为空字符串)


来源:

啊,我明白了。但是为什么它必须有一个给定的长度7?数组是否因为是原始字符串而附加到原始字符串上。join(这个)?@seandoko
7
就是一个例子,你可以在那里传递任何数字作为参数。如果我说
。乘以(15)
那么
count+1
等于16,这就构成了一个
新数组(16)
然后将15个字符串连接在一起。创建的数组没有附加到任何内容,它已创建并丢失。我明白了。感谢您的进一步澄清。啊,我明白了。但为什么它必须具有给定的长度7?数组是否已附加到原始字符串,因为它是。连接(此)?以@seandoko
7
为例,您可以在那里传递任何数字作为参数。如果我说
.times(15)
,那么
count+1
等于16,这就构成了一个
新数组(16)
,然后将15个字符串连接在一起。创建的数组没有附加任何内容,它已创建并丢失。我明白了。感谢您的进一步说明。