ES6中数组新增的方法有哪些
小编给大家分享一下ES6中数组新增的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
在ES6之前,创建数组的方式有2种:
一: 通过数组字面量
let array = [1,2,3];console.log(array);//[1,2,3]
二: 通过new Array()创建数组
let array = new Array(1, 2, 3);console.log(array); //[1,2,3]
Array.find((item,indexArr,arr)=>{}) 掌握
找出第一个符合条件的数组成员。
它的参数是一个回调函数,对所有数组成员依次执行该回调函数。
直到找出第一个返回值为true的成员,然后返回该成员。
如果没有符合条件的成员,则返回undefined。
-- 找出第一个大于15的数字let arr = [10, 20, 30]let firstItem = arr.find((item, index, Arr) => { return item > 15})console.log('firstItem==>', firstItem); //输出20-- 找出第一个大于19的数字的这一项的值let arr = [{ age: 10 }, { age: 20 }, { age: 30 }]let firstItem = arr.find((item, index, Arr) => { return item.age > 19})console.log('firstItem==>', firstItem); //输出{age: 20}
Array.findIndex((item, index, Arr) => {}) 掌握
数组实例的 findIndex 方法的用法与find方法非常类似,
返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
let arr = [{ age: 10}, { age: 20}, { age: 30}]let a = arr.findIndex((item, index, Arr) => { return item.age > 15})let b = arr.findIndex((item, index, Arr) => { return item.age > 45})console.log('a==>', a); //输出1console.log('b==>', b); //输出-1//查找数组的某一项是否有某个值//返回第一个符合条件的数组成员的位置const arr = [{ id: 001}, { id: 002}, { id: 003}];let index = arr.findIndex(item => { return item.id == '004'})console.log(index);
Array.flat()用于拉平嵌套的数组[推荐-超级好用]
数组的成员有时还是数组,Array.flat()用于将嵌套的数组"拉平",变成一维的数组。
该方法返回一个新数组,对原数据没有影响。[1, 2, [3, 4]].flat() 读音【fu la t】flat()默认只会"拉平"一层,如果想要"拉平"多层的嵌套数组。可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。[1, 2, [3, [4, 5]]].flat()上面代码中,表示想要拉平的层数,默认为1// [1, 2, 3, [4, 5]][1, 2, [3, [4, 5]]].flat(2)上面代码中,flat()的参数为2,表示要"拉平"两层的嵌套数组。// [1, 2, 3, 4, 5]如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。[1, [2, [3]]].flat(Infinity) // [1, 2, 3]如果原数组有空位,flat()方法会跳过空位。[1, 2, , 4, 5].flat()// [1, 2, 4, 5]
Array.at()返回对应下标的值[超级好用]
我们都知道JavaScript不支持数组索引值为负索引。
那么想要表示数组的最后一个成员,不能写成arr[-1],只能使用arr[arr.length - 1]。
为了解决负索引这个问题,es6中为数组实例增加了at()方法,接受一个整数作为参数。
返回对应位置的成员,支持负索引。
这个方法不仅可用于数组, 也可用于字符串和类型数组( TypedArray)。
如果参数位置超出了数组范围,at()返回undefined。
const arr = [100, 120, 18, 130, 4];console.log(arr.at(1)) //120console.log(arr.at(-1)) //4console.log(arr.at(-5)) //100console.log(arr.at(-6)) //undefined
Array.from() [掌握]
一个类似数组的对象,Array.from将它转为真正的数组。
需要注意的是:这个类似数组的对象必须要有length属性才可以,转为数组。
否者将会转为为一个空数组
let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3};// ES5的写法var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']// ES6的写法let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']当没有类似数组的对象没有length属性let arrayLike = { '0': 'a', '1': 'b', '2': 'c',};//此时返回的是一个空数组let arr2 = Array.from(arrayLike); // []
Array.of() 了解
Array.of()方法用于将【一组数值】转换为数组.
简单的使用:
const a = Array.of(10, 20, 26, 38);console.log(a); // [10, 20, 26, 38]const b = Array.of(1).length;console.log(b); // 1Array.of()可以用以下的代码模拟实现:function ArrayOf() { return [].slice.call(arguments);}
Array.includes的使用
Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值。
与字符串的includes方法类似。ES2016 引入了该方法。
简单的使用方法
const arr = [100, 200, 300];console.log(arr.includes('100')) //falseconsole.log(arr.includes(100)) //true
没有该方法之前,我们使用数组的indexOf方法,检查是否包含某个值。
if (arr.indexOf(el) !== -1) { // 有这个值}indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相等运算符(===)进行判断,这会导致对NaN的误判。[NaN].indexOf(NaN) // -1includes使用的是不一样的判断算法,所以没有这个问题。[NaN].includes(NaN)// true
扩展运算符 (...)
扩展运算符是三个点(...),
将一个数组转为用逗号分隔的参数序列。
console.log(...[1, 2, 3])// 1 2 3console.log(1, ...[2, 3, 4], 5)// 1 2 3 4 5[...document.querySelectorAll('div')]// [,,]let arr1=[11,22,];let arr2=["aa","bb"];// es5的合并let arr=arr1.concat(arr2);console.log(arr) // [11, 22, "aa", "bb"]//es6let newarr=[...arr1,...arr2]console.log(newarr) // [11, 22, 33, 55, "aa", "bb", "cc", "dd"]// 函数内部有一个对象,arguments可以获取到实参,但是一个伪数组//Array[饿 rei]function sun(){ console.log(arguments) //Arguments(8) [1, 2, 3, 4, 5, 6, 7, 9, callee: ƒ, Symbol(Symbol.iterator): ƒ] 他是一个伪数组}sun(1,2,3,4,5,6,7,9);// 如何将函数内部的伪数组变为真实的数组 方法1function sun(){ let ags=Array.prototype.slice.call(arguments); ags.push(150); console.log(ags); //[1, 2, 3, 4, 5, 6, 7, 9, 150]}sun(1,2,3,4,5,6,7,9);// 如何将函数内部的伪数组变为真实的数组 方法2function sun(){ let ags=[...arguments];//将伪数组百年未真实的数组 ags.push(150); console.log(ags); //[1, 2, 3, 4, 5, 6, 7, 9, 150]}sun(1,2,3,4,5,6,7,9);// 总结扩展运算符是... [...变为真实数组的对象]数组的空位
数组的空位指的是,数组的某一个位置没有任何值.
比如Array()构造函数返回的数组都是空位。
let arr = new Array(3)console.log(arr); // [, , ,] 谷歌浏览器中会有出现 [空属性 × 3]上面代码中,Array(3)返回一个具有 3 个空位的数组。
forEach(), filter(), reduce(), every() 和some()都会跳过空位。map()会跳过空位,但会保留这个值join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串。ps:ES6 则是明确将空位转为undefined。let arr = new Array(3)console.log(arr[0] === undefined); //trueES5 对空位的处理,已经很不一致了,大多数情况下会忽略空位。
ps:ES6 则是明确将空位转为undefined。Array.from()方法会将数组的空位,转为undefined,也就是说,这个方法不会忽略空位。Array.from(['a',,'b'])// [ "a", undefined, "b" ]扩展运算符(...)也会将空位转为undefined。[...['a',,'b']]// [ "a", undefined, "b" ]new Array(3).fill('a') // ["a","a","a"]for...of循环也会遍历空位。let arr = [, ,];for (let i of arr) { console.log(1);}// 1// 1上面代码中,数组arr有两个空位,for...of并没有忽略它们。如果改成map()方法遍历,空位是会跳过的以上是"ES6中数组新增的方法有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数组 方法 空位 成员 参数 位置 函数 代码 对象 条件 运算符 运算 索引 输出 属性 篇文章 不够 两个 内容 写法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喋血复仇什么服务器中国玩家多 电子数据库管理 国产化服务器什么价位 按照什么对网络安全分级 计算机网络技术是学类 网站数据库几万条数据 app软件开发给您好的建议 中国网络安全贡献 中国互联网公司科技大牛 学习打造网络安全宣传平台 我的世界网易手游版服务器 网络安全真实的较量感后感 网络安全方面3大主要的安全措施 怎么查看大数据库的使用情况 sqlite数据库最大的类是 久森互联网科技属于哪个区 云台管理服务器 软件开发商要投诉什么 苏州项目软件开发哪家可靠 山东惠普服务器维修哪家好 佛山万柯网络技术有限公司 太仓专业性网络技术咨询热线 服务器硬盘安装系统 人工智能及网络安全培训方案 数据库涉及到算法知识吗 yii2 数据库连接 广东智慧党建软件开发软件 书法视频软件开发 数据库带格式存入文本 db2怎样看数据库名命令