es6添加数组,es6中数组的新方法
本教程运行环境:windows7系统,ECMAScript版本6,Dell G3电脑。
es6新增数组方法
1、Array.from()
Array.from方法用于将两种对象转换为实数组:
类似数组的对象(类似数组的对象)
可迭代对象(包括ES6的新数据结构集和映射)
这意味着只要部署了迭代器接口的数据结构,Array.from就可以将其转换成数组。
实际上,它可以用来转换DOM操作返回的NodeList集合和函数内部的arguments对象。
当传递一个参数时,它用来把类数组变成一个实数组。
阵列重复数据消除
const arr=[1,2,3,3,2,5];
console . log(array . from(new Set(arr)));//[1,2,3,5]
//.也能达到同样的效果。
Console.log ([.new set (arr)])//[1,2,3,5]对于没有部署此方法的浏览器,可以改用Array.prototype.slice方法。
cosnt toArray=(()={
数组. from?array . from:obj=[]. slice . call(obj)
})()还可以接收第二个参数,传入一个函数实现类似map方法的效果,处理每个元素并返回处理后的数组。
Array.from ([1,2,3],item=item * 2)//[2,4,6]返回字符串的长度。
它可以用来把一个字符串变成一个数组,然后返回字符串的长度,因为它可以正确处理各种Unicode字符,从而避免了JS自己把大于/ufff的Unicode字符算作2个字符的bug。
函数countLength(字符串){
返回Array.from(字符串)。长度
}2、Array.of()
Array.of方法用于将一组值转换为数组。弥补数组构造函数Array()的不足。因为参数个数不同,Array()的行为也会不同。
//下面的代码显示了不同之处
(3)的数组;//[3]
(3,11,8)的数组;//[3,11,8]
新数组(3);//[,]
新数组(3,11,8);//[3, 11, 8]
//Array.of方法可以通过下面的代码模拟实现。
函数ArrayOf() {
return[]slice . call(参数);
}3、数组实例的 find() 和 findIndex()
find()
返回第一个限定的数组成员,其参数是一个回调函数。所有数组成员依次执行这个函数,直到找到第一个符合条件的成员,然后返回这个成员。如果没有合格的成员,则返回undefined。
该方法的回调函数接收三个参数:当前值、当前位置和原始数组。
示例1
[1,12,4,0,5].find ((item,index,arr)=returnitem1)//0示例2
//find()
var item=[1,4,-5,10]。find(n=n ^ 0);
console . log(item);//-5
//find也支持这种复杂的搜索。
var点数=[
{
x: 10,
y: 20
},
{
x: 20,
y: 30
},
{
x: 30,
y: 40
},
{
x: 40,
y: 50
},
{
x: 50,
y: 60
}
];
points.find(函数匹配器(点){
返回point . x % 3==0 point . y % 4==0;
});//{ x: 30,y: 40 }findIndex()
用法基本上与find()方法相同,只是它返回第一个合格数组成员的位置,否则返回-1。
示例1
[1, 2, 4, 15, 0].FindIndex ((item,Index,arr)=returnitem10)//3示例2
var点数=[
{
x: 10,
y: 20
},
{
x: 20,
y: 30
},
{
x: 30,
y: 40
},
{
x: 40,
y: 50
},
{
x: 50,
y: 60
}
];
points.findIndex(函数匹配器(point) {
返回point . x % 3==0 point . y % 4==0;
});//2
points.findIndex(函数匹配器(point) {
返回point . x % 6==0 point . y % 7==0;
});//14、数组实例的 fill()
fill()方法使用给定的值,并填充一个数组。fill方法还可以接受第二个和第三个参数,这两个参数用于指定填充的开始位置和结束位置。//fill方法使用给定的值填充数组。
var fillArray=新数组(6)。填充(1);
console . log(fill array);//[1, 1, 1, 1, 1, 1]
//fill方法还可以接受第二个和第三个参数,这两个参数用于指定填充的开始和结束位置。
[a , b , c]。fill(7,1,2);
//[a ,7, c]
//注意,如果填充的类型是对象,那么分配的是具有相同内存地址的对象,而不是深度复制对象。
设arr=新数组(3)。填充({
姓名:“迈克”
});
arr[0]。name= Ben
console . log(arr);
//[{name: Ben},{name: Ben},{name: Ben}]这两种方法都可以在数组中找到NaN,但是ES5中的indexOf()却找不到NaN。
5、数组实例的 entries(),keys() 和 values()
这三个方法都用来遍历数组,并且都返回一个遍历对象,这个对象可以被for…of循环迭代。
不同的是:
Keys()是键名的遍历。
Values()是键值的遍历。
Entries()是键值对的遍历。
for(设索引为[a , b]。keys()) {
console.log(索引);
}
//0 1
for (let elem of [a , b]。values()) {
console . log(elem);
}
//a b
for (let [index,elem] of [a , b]。entries()) {
console.log(index,elem);
}
//0 a
//1个“b”
var a=[1,2,3];
[.a . values()];//[1,2,3]
[.a . keys()];//[0,1,2]
[.a . entries()];//[ [0,1], [1,2], [2,3] ]6、includes()方法返回一个布尔值
此方法返回一个布尔值,该值指示数组是否包含给定值。
[1, 2, 3].包括(2) //true
[(1, 2, 3)].包括(4) //false也可以接收第二个参数,表示搜索的起始位置。默认值为0。如果第二个参数为负,则表示数字的位置。如果第二个参数大于数组的长度,它从下标0开始。
Includes方法弥补了indexOf方法语义性不够和误判NaN的缺点。
【1,23,南】。includes(NaN)//真实兼容方法:
函数包含=( ()={
数组.原型.包含
?(arr,val)=arr.includes(val)
:(arr,val)=arr . some(item=return item===val)
})()7、数组实例的 flat(),flatMap()
Flat()用于将嵌套数组“展平”成一维数组。此方法返回一个新数组,它对原始数据没有影响。传递参数意味着展平几层。默认情况下,flatMap()是一层。只能扩展一个层阵列。方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。此方法返回一个新数组,而不改变原始数组//flat()
[1, 2, [3, [4, 5]]].扁平()
//[1, 2, 3, [4, 5]]
[1, 2, [3, [4, 5]]].公寓(2)
//[1, 2, 3, 4, 5]
//平面图()
[2, 3, 4].平面映射((x)=[x,x * 2])
//执行//map后,是[[2,4],[3,6],[4,8]]
//然后执行flat()方法得到如下结果。
//[2, 4, 3, 6, 4, 8]
//flatMap()只能展开一层数组。
//相当于。扁平()
[1, 2, 3, 4].平面图(x=[
[x * 2]
])
//执行//map后,是[[2]],[[4],[[6]],[[8]]]
//然后在执行flat()方法后,您会得到以下结果
//[[2],[4],[6],[8]]复制代码8、数组实例的copywithin()
将指定位置的成员复制到当前数组中的其他位置,然后返回当前数组,将会更改原始数组。
接收三个参数:
1.目标(必需)从此位置替换数据。
2.start(可选)从这个位置开始读取数据。默认值为0,如果为负,则表示位数。
3.end(可选)在到达该位置之前停止读取数据,默认情况下,该位置等于数组长度。如果是负数,就表示到数。
这三个参数都应该是数字,如果不是,它们将自动转换为数字。
[1,2,3,4,5].copywithin(0,3);//[4,5,3,4,5]表示从下标3到末尾的成员(4,5),复制到下标0开始的位置,结果替换了原来的1和2[相关推荐:javascript视频教程,web前端]。以上是es6的新数组方法是什么的细节。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。