相对索引法中字符串的.at函数补充参考:社会资讯/SocialLinks:(欢迎关注,欢迎关注)Array.prototype新增的新方法---at函数,可以让我们更方便的访问数组和字符串末尾的元素。在实际开发中,我经常需要访问数组或字符串末尾的元素。但是,常用的方法不是很好,比如my_array[my_array.length-N]。或者使用性能可能不是很好的操作,例如my_array.slice(-N)[0]。使用这个新的函数方法.at(),更符合我们自己的常规思维。这样做是为了将负指数解释为“从头开始”。这意味着什么?即如果参数为负数,则表示倒数第二个数;apositivenumber表示正数,相当于普通的属性访问。前面的示例可以表示为my_array.at(-N)。例如:vararr=[1,2,5,9,78]//第0个console.log(arr.at(0))//1//第一个console.log(arr.at(1))//2//最后一个console.log(arr.at(-1))//78//倒数第二个console.log(arr.at(-2))//9是不是符合我们的思维逻辑?这个新方法足够小,它的完整语义可以被以下兼容的polyfill实现理解:functionat(n){//将参数转换为整数n=Math.trunc(n)||0;//删除小数点//允许从末尾开始负索引if(n<0)n+=this.length;//越界访问返回undefinedif(n<0||n>=this.length)returnundefined;//否则,这只是正常的属性访问returnthis[n];}字符串的补充因为at最终执行正常的索引,所以对字符串值调用at会返回相应索引处的字符。就像字符串上的普通索引一样,这会返回可能不是您想要的Unicode字符的字符!请考虑String.prototype.codePointAt()是否更适合您的用例。使用codePointAt():'ABC'.codePointAt(1);//66'\uD800\uDC00'.codePointAt(0);//65536'XYZ'.codePointAt(42);//undefined请关注我的GitHub:@huangyangquang??欢迎关注我的公众号:前端前辈Joshua
