运维开发网

在ES6中添加阵列的方法的详细介绍

运维开发网 https://www.qedev.com 2022-04-16 14:36 出处:网络
数组(Array)是有序的元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名,下面这篇文章主要给大家介绍了关于ES6中数组新增方法的相关资料,需要的朋友可以参考下

数组(Array)是有序的元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名,下面这篇文章主要给大家介绍了关于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)=gt;{}) 掌握

找到第一个符合条件的数组成员。

它的参数是一个回调函数,依次在所有数组成员上执行。

找到返回值为true的第一个成员,然后返回它。

如果没有合格的成员,则返回undefined。

-- 找出第一个大于15的数字let arr = [10, 20, 30]let firstItem = arr.find((item, index, Arr) =gt; { return item gt; 15})console.log('firstItem==gt;', firstItem); //输出20-- 找出第一个大于19的数字的这一项的值let arr = [{ age: 10 }, { age: 20 }, { age: 30 }]let firstItem = arr.find((item, index, Arr) =gt; { return item.age gt; 19})console.log('firstItem==gt;', firstItem); //输出{age: 20}


Array.findIndex((item, index, Arr) =gt; {}) 掌握

实例的findIndex方法与find方法非常相似,

返回满足条件的第一个数组成员的位置,如果所有成员都不满足条件,则返回-1。

let arr = [{ age: 10}, { age: 20}, { age: 30}]let a = arr.findIndex((item, index, Arr) =gt; { return item.age gt; 15})let b = arr.findIndex((item, index, Arr) =gt; { return item.age gt; 45})console.log('a==gt;', a); //输出1console.log('b==gt;', b); //输出-1//查找数组的某一项是否有某个值//返回第一个符合条件的数组成员的位置const arr = [{ id: 001}, { id: 002}, { id: 003}];let index = arr.findIndex(item =gt; { return item.id == '004'})console.log(index);


Array.flat()用于拉平嵌套的数组[推荐-超级好用]

数组的成员有时是数组,Array.flat()用来设置嵌套数组ldquo平rdquo,变成一维数组。

该方法返回一个新数组,对原数据没有影响。[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的array实例中添加了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')]// [lt;divgt;, lt;divgt;, lt;divgt;]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); //true

ES5对空位的处理已经很不一致了,大多数情况下空位会被忽略。

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阵列方法的这篇文章到此结束。有关ES6阵列添加方法的更多信息,请搜索源搜索网以前的文章或继续浏览下面的相关文章。希望大家以后能多支持源搜网!


0

精彩评论

暂无评论...
验证码 换一张
取 消