为什么join()不能处理字符串?

Why doesn't join() work on strings?

本文关键字:处理 字符串 不能 join 为什么      更新时间:2023-09-26

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

"abcdefg".join("-");

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

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

字符串不是数组,当然它们的行为类似于数组,但它们不是数组。

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

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

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

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

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

查看MDN Docs:

  • <Array>.join

  • <String>.split

试试这个:

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

在连接前将字符串转换为字符数组

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

如其他答案所示,字符串不是数组。然而,可以使用call对字符串使用数组方法。

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

但是你可以让它这样工作:

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

以这种方式使用call将成功地在字符串字面值"abcdefg"上运行join(), -作为粘合剂。