为什么不加入()在字符串上工作?

时间:2015-06-09 01:38:26

标签: javascript arrays string

在Javascript中,字符串是数组。 join("glue")使用粘合剂连接数组。那么为什么这不起作用呢?

"abcdefg".join("-");

预期输出:a-b-c-d-e-f-g

实际输出:Uncaught TypeError: string.join is not a function

4 个答案:

答案 0 :(得分:3)

字符串不是数组,当然它们的行为与那些一样,但它们不是数组。

为了让您的代码片段正常工作,您需要"分割"你的字符串变成了一个块数组。

也许这个片段可以解决问题。

"abcdef".split('').join('-');

注意我是如何在.join调用和对象(在本例中为静态字符串"abcdef")之间插入.split方法调用(也注意其参数,这意味着使用每个字符)

使用.split将字符串INTO转换为纯数组,然后您可以使用.join方法。

查看MDN文档:

答案 1 :(得分:0)

试试这个:

"abcdefg".split('').join('-');

答案 2 :(得分:0)

在join之前将字符串转换为字符数组。

"abcdefg".split("").join("-")

答案 3 :(得分:0)

如其他答案所示,字符串不是数组。但是 可以使用call在字符串上使用数组方法。

"abcdefg".join("-"); // fails with typeerror

但你可以这样工作:

Array.prototype.join.call("abcdefg", "-"); // works

以这种方式使用call将成功运行join()字符串文字"abcdefg"并以-作为粘合剂。