概述
长久以来,JavaScript 不支持数组的负索引,如果要引用数组的最后一个成员,不能写成
arr[-1]
,只能使用arr[arr.length - 1]
。这是因为方括号运算符
[]
在 JavaScript 语言里面,不仅用于数组,还用于对象。对于对象来说,方括号里面就是键名,比如obj[1]
引用的是键名为字符串1
的键,同理obj[-1]
引用的是键名为字符串-1
的键。由于 JavaScript 的数组是特殊的对象,所以方括号里面的负数无法再有其他语义了,也就是说,不可能添加新语法来支持负索引。为了解决这个问题,现在有一个提案,为数组实例增加了
at()
方法,接受一个整数作为参数,返回对应位置的成员,支持负索引。这个方法不仅可用于数组,也可用于字符串和类型数组。
const arr = [5, 12, 8, 130, 44];
arr.at(2) // 8
arr.at(-2) // 130
如果参数位置超出了数组范围,at()
返回undefined
。
slice()、charAt() VS at()
ES5 对字符串对象提供charAt()
方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF
的字符。
'abc'.charAt(0) // "a"
'?'.charAt(0) // "uD842"
上面代码中,charAt()
方法返回的是 UTF-16 编码的第一个字节,实际上是无法显示的。
目前,有一个提案,提出字符串实例的at()
方法,可以识别 Unicode 编号大于0xFFFF
的字符,返回正确的字符。
'abc'.at(0) // "a"
'?'.at(0) // "?"
slice 也可以查询数组里的值,但是返回的是一个数组,则就需要slice()后面加上 [0]这样虽然也可以,但是本人对于这个就感觉有点繁琐,而ES6提供了at() 方便我们更快的寻找到对应的数据
let arr = [1, 56, 4, 89, 97, 2]
let obj = { name: 'jack', age: 20 }
let data = [
{ name: 'jack', age: 20 },
{ name: 'rose', age: 18 }
]
// console.log(arr.at(-1));
// 2
// console.log(data.slice(-1)[0].name);
// rose
console.log(data.at(-1).name);
// rose
最后
以上就是彪壮项链为你收集整理的【ES6】- at()方法的全部内容,希望文章能够帮你解决【ES6】- at()方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复