首页 > 其他分享 >Array.prototype.at。Arrat和 String 中的 at 方法

Array.prototype.at。Arrat和 String 中的 at 方法

时间:2022-11-07 10:24:14浏览次数:46  
标签:下标 String idx length Array prototype

一篇有关新 js 特性 at 方法的思考

  • 入参只能是number 类型,允许入参有小数(按照 chrome DevTools Console 测试确实可以带小数)
  • 有返回值,如果对应下标在实例中存在,则返回对应的 value,如果不存在,返回 undefined
  • at 可以用在 Array 或者 String 实例上
  • polyfill 实现

polyfill started (ES3)

function at(arg){
  // 因为入参允许存在小数点情况,这里需要处理掉小数点
  var idx = Math.trunc(arg) || 0;
  // 在ES3、ES5 中没有 at 的特性支持,需要通过 js 手动实现 at 入参为负数的特性
  // 因此用实例 length + 入参下标计算出结果
  if (idx < 0) { idx += this.length };
  // 根据下标读取数值包头不包尾的原则,处理传入参数经过计算后还是有 `下标越界` 这种情况时,返回 undefined
  if (idx < 0 || idx >= this.length) { return undefined };
  // 此时 idx 为正整数,直接用 idx 读取下标值并返回
  return this[idx]
}
// 向原型链注入特性
String.prototype.at = at;
Array.prototype.at = at

标签:下标,String,idx,length,Array,prototype
From: https://www.cnblogs.com/PeiQi1229/p/16865084.html

相关文章

  • 项目报错类型:Invalid prop: type check failed for prop "index". Expected String wi
    vue项目中出现可一个小报错问题:Invalidprop:typecheckfailedforprop"index".ExpectedStringwithvalue"125",gotNumberwithvalue125.在elementUI导航......
  • array
    定义数组:ARRAYARRAY_NAME(SUBSCRIPT)($)VARIABLE-LISTARRAY-VALUES访问数组:PROCPRINTDATA=ARRAY_NAME;OF运算符:SUM=SUM(OFA(*));MIN = MIN(OFA(*));MEA......
  • 一本通 1466 Power Strings
    找字符串的最短循环节 #include<bits/stdc++.h>usingnamespacestd;constintN=1e6+1;chara[N];intn,p[N];voidinit(){inti,j=0;......
  • String常用方法有哪些
    一、构造器实质是给底层的char数组value赋值Strings1=newString();Strings2=newString(“abc”);Strings3=newString(newchar[]{‘a',‘b',‘c'});二......
  • 33. Search in Rotated Sorted Array
    Supposeanarraysortedinascendingorderisrotatedatsomepivotunknowntoyoubeforehand.(i.e., 0124567 mightbecome 4567012).Youaregiv......
  • ArrayList源码分析
    目标:理解ArrayList的底层数据结构深入掌握ArrayList查询快,增删慢的原因掌握ArrayList的扩容机制掌握ArrayList初始化容量过程掌握ArrayList出现线程安全问题原因及解......
  • MySQL表加字段可为null导致ArrayIndexOutOfBoundsException报错问题记录
    问题爆出企微群告警爆了,立即去看ELK报错日志,报错日志非常莫名其妙:​​java.lang.ArrayIndexOutOfBoundsException:16​​原因分析事后发现共有18257次报错日志,时间跨度19:......
  • StringBuffer 根本没用
    这里说的StringBuffer是Java标准库中的java.lang.StringBuffer类。有一个非常老掉牙的问题:StringBuilder和StringBuffer有哪些区别?使用场景分别有哪些?我非常清......
  • array
    packagearray;publicclassArrayDemo01{publicstaticvoidmain(String[]args){int[]nums=null;nums=newint[5];int[]num......
  • QString的一些使用技巧
    简介QString字符串被每个GUI程序所使用,不仅是用户界面,还有数据结构。C++原生提供两种字符串:传统的C风格以'\0'结尾的字符数组和std::string类。与这些不同,QString使......