繁体   English   中英

javascript中charAt方法的替代方法

[英]Alternative to charAt method in javascript

这是手头的任务:

编写一个名为 charAt 的函数,它接受一个字符串和一个索引(数字)并返回该索引处的字符。

如果数字大于字符串的长度,该函数应返回一个空字符串。

关键是你不能使用内置的 charAt 方法。

除了不包含 if 语句之外,我是否在做正确的事情? 另外,正确的实现是什么样的? (JS新手,所以我提前道歉)。

function charAt(string, index) {
  var charAt = string[index];
  return charAt;
}

它看起来基本没问题,除了一个问题 - 有许多奇数字符(由代理对组成的字符,有时也称为多字节字符)在字符串中占用了多个索引。 一个例子是💖。 如果字符串包含这样的字符,它将被视为字符串中的两个索引:

 function charAt(string, index) { var charAt = string[index]; return charAt; } console.log( charAt('foo💖bar', 3), // Broken character, wrong charAt('foo💖bar', 4), // Broken character, wrong charAt('foo💖bar', 5), // Wrong character (should be "a", not "b") charAt('foo💖bar', 6), // Wrong character (should be "r", not "a") );

如果这对您的情况来说可能存在问题,请考虑先使用Array.from将其转换为数组:

 function charAt(string, index) { var charAt = Array.from(string)[index]; return charAt; } console.log( charAt('foo💖bar', 3), charAt('foo💖bar', 4), charAt('foo💖bar', 5), charAt('foo💖bar', 6), );

或者,当索引不存在时返回空字符串:

 function charAt(string, index) { return Array.from(string)[index] || ''; } console.log( charAt('foo💖bar', 3), charAt('foo💖bar', 4), charAt('foo💖bar', 5), charAt('foo💖bar', 6), ); console.log(charAt('foo💖bar', 123));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM