JavaScript 访问字符串字符作为数组

IT技术 javascript
2021-03-13 23:14:58

这样做可以吗:

var myString="Hello!";
alert(myString[0]); // shows "H" in an alert window

还是应该用 charAt(0) 或 substr(0,1) 来完成?“可以吗”我的意思是它可以在大多数浏览器上工作,是否有最佳实践建议,否则等等。

谢谢你。

4个回答

在 ECMAScript 5 之前,将字符作为字符串的数字属性访问是非标准的,并且不适用于所有浏览器(例如,它不适用于 IE 6 或 7)。myString.charAt(0)当您的代码必须在非 ECMAScript 5 环境中工作时,您应该使用它或者,如果您要访问字符串中的大量字符,则可以使用其split()方法将字符串转换为字符数组

var myString = "Hello!";
var strChars = myString.split("");
alert(strChars[0]);
@davin:谢谢。我现在已经在我的答案中链接到该部分。
2021-04-22 23:14:58
谢谢,蒂姆。只是想补充一点,它在 IE8 中确实有效。不确定其他人。
2021-04-28 23:14:58
@Francisc:啊,好的,谢谢。我在 IE 7 上进行了测试。我已经更新了我的答案。
2021-05-03 23:14:58
@Francisc:您确定访问字符作为字符串的数字属性在 IE 8 中有效吗?似乎没有。
2021-05-10 23:14:58
只是为非标准评论添加链接/参考,请参阅(在字符访问下):developer.mozilla.org/en/JavaScript/Reference/Global_Objects/...
2021-05-14 23:14:58

使用charAt可能是最好的主意,因为它最准确地传达了代码的意图。调用substr单个字符绝对是一种矫枉过正。

alert(myString.charAt(0));
如果字符串中的第一个字符由多个 UTF8 代码点(表情符号、组合字符等)表示,则此方法失败。
2021-05-18 23:14:58

2018 年回答:是的,可以访问数组之类的字符串。

语法清晰简洁。IE6 和 IE7 早已不复存在。我认为没有理由不使用它。

但是:不要误以为您可以在字符串上使用所有 Array 方法,例如reverseand pop
2021-05-02 23:14:58

在 ES6 中,我们可以使用解构,因为字符串可以被视为数组:

const [...rest] = 'Hello!';

console.log(rest)
> Array ["H", "e", "l", "l", "o", "!"]

console.log(rest[0])
> "H"
这应该是正确的答案,因为它是正确处理无法由单个 UTF8 代码点(组合字符、表情符号等)表示的字符的唯一方法。
2021-05-09 23:14:58