新技术篇 - Array.prototype.at()函数

相对索引方法之.at函数

Array.prototype 上的新的新方法 --- at 函数,可以让我们更加方便的访问到数组 和 字符串末尾的元素。

在实际开发中,我经常需要去访问到数组或者是字符串中末尾的某个元素的。

但是吧,通常使用的法子不是很好的,比如 my_array[my_array.length - N]

或者是

使用可能没有什么性能的操作,比如 my_array.slice(-N)[0]

使用这个新的函数方法 .at() ,它更加符合我们人自身的常规思考。它是这样的,它将负指数解释为“从最后”。

什么意思呢?

就是,参数是负数,就表示倒数第几个; 正数就表示正数第几个,相当于普通的属性访问。

前面的示例可以表示为 my_array.at(-N)

比如:

var arr = [125978]

// 第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 实现理解:

function at(n{
  // Convert the argument to an integer
  n = Math.trunc(n) || 0// 去掉小数点
  // Allow negative indexing from the end
  if (n < 0) n += this.length;
  // Out-of-bounds access returns undefined
  if (n < 0 || n >= this.length) return undefined;
  // Otherwise, this is just normal property access
  return this[n];
}

对字符串的补充

由于 at 最终执行普通索引,因此在字符串值上调用 at 会返回对应索引的字符。 就像字符串上的普通索引一样,这返回的字符可能不是您想要的 Unicode 字符! 请考虑 String.prototype.codePointAt() 是否更适合您的用例。

使用 codePointAt():

'ABC'.codePointAt(1);          // 66
'\uD800\uDC00'.codePointAt(0); // 65536

'XYZ'.codePointAt(42); // undefined

动下小手

  • 欢迎关注我的GitHub:@huangyangquang ⭐⭐
  • 欢迎关注我的公众号:前端学长Joshua
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值