es6数组常用的四种方法,es6数组的新方法
本教程运行环境:windows7系统,ECMAScript版本6,Dell G3电脑。
传统Array 对象方法
toSource()返回该对象的源代码。String()将数组转换为字符串并返回结果。ToLocaleString()将数组转换为局部数组并返回结果。Value()返回数组对象的原始值。修改原始数组不会修改原始数组。push,popconcatunshift,ShiftJoinSortsLicenseVerseindexof(),Lasdexof()SpliceForeacheCopywithMapFillFilter Some Every Reduce,reduceRight包含finde,findIndex entries(),keys(),values()
修改原数组
push()将一个或多个元素添加到数组末尾并返回新的长度。Unshift()将一个或多个元素添加到数组的开头,并返回新的长度。Pop()删除并返回数组的最后一个元素shift()删除并返回数组的第一个元素sort()对数组的元素进行排序reverse()反转数组中元素的顺序。Splice()删除元素并将新元素添加到数组中。splice
语法
arrayObject.splice(索引,数量,项目1,itemX)
var arr=new Array();
arr[0]=乔治;
arr[1]=约翰;
arr[2]=托马斯;
排列拼接(2,1);//乔治,约翰
arr.splice(1,0,威廉);//乔治,威廉,约翰
arr.splice(2,1,哈哈);//George , William ,哈哈
不修改原数组
Concat()连接两个或多个数组并返回结果。Join()将数组的所有元素放入一个字符串中。元素由指定的分隔符分隔。Slice()从现有数组中返回选定的元素slice。
语法
arrayObject.slice(start,end);
需要开始。指定开始选择的位置。可以是负数,从数组末尾开始计数。End可选。指定结束选择的位置。如果未指定,拆分数组包含从数组开头到结尾的所有元素。可以是负数,从数组末尾开始计数。var arr=new Array();
arr[0]=乔治;
arr[1]=约翰;
arr[2]=托马斯;
arr.slice(2,1);//[]
arr.slice(1,2);//威廉
arr.slice(-2,-1);//William
ES5新增数组
索引方法:indexOf(),lastIndexOf()迭代方法:forEach(),map(),filter(),some(),every()合并方法:reduce(),reduceRight()索引方法
indexOf
Array.indexof (searchelement [,fromindex])返回一个整数索引值,如果不匹配(完全匹配),则返回-1。FromIndex是可选的,这意味着从这个位置开始搜索。如果默认值或格式不符合要求,则使用默认值0。var数据=[2,5,7,3,5];
console.log(data.indexOf(5, x ));//1 (x 被忽略)
console.log(data.indexOf(5, 3 ));//4(从第3位开始搜索)lastIndexOf
array . lastindexof(search element[,fromindex])从字符串的末尾开始搜索,而不是从开头。fromIndex的默认值是array.length-1。var数据=[2,5,7,3,5];
console . log(data . lastindexof(5));//4
console.log(data.lastIndexOf(5,3));//1(从后向前,索引值小于3时开始搜索)
console . log(data . lastindexof(4));//-1(未找到)迭代方法
每个方法接受两个参数,第一个参数callback(必需的回调函数),第二个参数是可选的上下文参数。
第一个参数回调接受三个参数:当前项的值、当前项在数组中的索引以及数组对象本身。即函数(value,index,arr){ };需要注意的是,第一个参数和第二个参数即索引和值的顺序与我们常用的jQuery中封装的方法相反。第二个参数是可选的上下文参数,是执行第一个函数参数的作用域对象,也就是上面提到的回调中this指向的值。如果没有指定第二个可选参数,将使用全局对象(浏览器中的窗口),甚至在严格模式下未定义。需要注意的是,除了forEach()方法,其他迭代方法中的回调都需要有返回值,否则会返回undefined。
forEach
ForEach()循环遍历数组,并对数组中的每一项运行给定的函数。此方法没有返回值。
[].forEach(函数(值,索引,数组){
//.
},[this object]);除了必需的回调函数参数,forEach还可以接受可选的上下文参数(在回调函数中更改this point)(第二个参数)。如果没有指定第二个可选参数,将使用全局对象(浏览器中的窗口),甚至在严格模式下也没有定义。[1,2,3,4].foreach(函数(项,索引,数组){
console . log(array[index]==item);//真
总和=项目;
});
警报(总和);//10
var数据库={
用户:[张含韵,江,李小璐],
sendEmail:函数(用户){
if (this.isValidUser(user)) {
Console.log (Hello, user);
}否则{
Console.log(对不起,用户,你不是家庭成员);
}
},
isValidUser:函数(用户){
返回/^表/。测试(用户);
}
};
//给大家发邮件。
数据库的遍历。users.foreach (//database.users)
Database.sendEmail,//发送邮件
数据库//使用数据库代替上面用红色标记的数据库
);
//结果:
//你好,张含韵
//对不起,江,你不是顾家的人。
//对不起,李小璐,你不是map的。
Map()指的是“映射”,它对数组中的每一项运行一个给定的函数,并返回一个由每个函数调用的结果组成的数组。
[].map(函数(值,索引,数组){
//.
},[this object]);var数据=[1,2,3,4];
var arrayOfSquares=data . map(function(item){
退货项目*项目;
});
alert(arrayOfSquares);//1, 4, 9, 16filter
Filter(),“filter”,对数组中的每一项运行给定的函数,返回满足过滤条件的数组。
array.filter(回调,[this object]);false的回调函数需要返回一个布尔值true或false。只要返回值弱等于==true/false就ok,而不是非要返回===true/false。var arr3=[1,2,3,4,5,6,7,8,9,10];
var flag=arr 3 . filter(function(value,index) {
返回值% 3===0;
});
console . log(flag);//[3, 6, 9]every
Every(),判断数组中的每一项是否满足给定的条件,只有当所有项都满足条件时才会返回true。注意: 空数组,则返回true
array.every(回调,[this object]);
var arr4=[1,2,3,4,5];
var flag=arr 4 . every(function(value,index) {
返回值% 2===0;
});
console . log(flag);//falsesome
Some(),确定数组中是否有满足条件的项。只要有一项满足条件,就返回true。注意: 空数组,则返回false
array.some(回调,[this object]);
var arr5=[1,2,3,4,5];
var flag=arr 5 . some(function(value,index) {
返回值% 2===0;
});
console . log(flag);//真归并方法
这两种方法可能比以前稍微复杂一些。它们都遍历数组中的所有项,然后生成一个最终返回值。这两个方法接收两个参数。
第一个参数回调,函数接受四个参数,分别是(初始值total必选,currentValue Current Value必选,索引值currentIndex可选,当前数组arr可选)。该函数需要返回值,该值将在下一次迭代中用作初始值。第二个参数是迭代的initialValue,这是可选的。如果是默认值,初始值是数组中的第一项,它是从数组中的第一项叠加而来的。默认参数比正常的值传递少需要一次操作。reduce
reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始递减,最后计算为一个值。Reduce()不会对空数组执行回调函数。
数组。reduce(function(total,currentValue,currentIndex,array) {
//.
});
var arr9=[1,2,3,4];
var sum 9=arr 9 . reduce(function(total,curr,index,array) {
返回总计*货币;
});
console . log(sum 9);//24
var sum 9 _ 1=arr 9 . reduce(function(total,curr,index,array) {
返回总计*货币;
}, 10);
console . log(sum 9 _ 1);//240reduceRight
与reduce()相比,reducereight()的用法类似,但区别在于reducereight是从数组的末尾实现的。
array.reduceRight(回调,[this object]);
var arr9=[2,45,30,80];
var flag=arr 9 . reduce right(function(total,curr,index) {
返回总计-货币;
});
var flag _ 1=arr 9 . reduce right(function(total,curr,index) {
返回总计-货币;
},200);
console . log(flag);//3
console . log(flag _ 1);//43Array方法
isArray
确定参数是否为“数组”并返回true或false。
var a=[1,2,3];
array . isarray(a);//true
ES6数组方法
Array方法
Array.from()
用于将两种对象转换成真正的数组:类数组对象和可迭代对象(包括ES6的新数据结构集和映射)。
让arrayLike={
0: a ,
1: b ,
2: c ,
长度:3
};
设arr 2=array . from(arrayLike);//[a , b , c]Array.from也可以接受第二个参数,其作用类似于数组的map方法,用于处理每个元素,并将处理后的值放入返回的数组中。
Array.from(arrayLike,x=x * x);
//相当于
Array.from(arrayLike)。map(x=x * x);
Array.from([1,2,3],(x)=x * x)
//[1, 4, 9]Array.of()
用于将一组值转换为数组。
(3,11,8) //[3,11,8]的数组
(3) //[3]实例方法的数组
会改变原数组
copyWithin()
在当前数组内,将指定位置的成员复制到其他位置(原始成员将被覆盖),然后返回当前数组。
数组。copyWithin(target,start=0,end=this . length);Target(必需):替换此位置的数据。如果是负数,则表示倒数。Start(可选):从该位置开始读取数据,默认为0。如果是负数,则表示倒数。End(可选):在到达该位置之前停止读取数据,默认情况下该位置等于数组长度。如果是负数,则表示倒数。//将位3复制到位0
[1, 2, 3, 4, 5].copyWithin(0,3,4)
//[4, 2, 3, 4, 5]
//-2相当于位置3,-1相当于位置4。
[1, 2, 3, 4, 5].copyWithin(0,-2,-1)
//[4,2,3,4,5]fill()
用给定值填充数组。
[a , b , c]。填充(7);//[7, 7, 7]
设arr=新数组(3)。填充([]);
arr[0]。推(5);//[[5], [5], [5]]不会改变原数组
查找()
用于查找第一个符合条件的数组成员。它的参数是一个回调函数,由所有数组成员依次执行,直到找到第一个返回值为真的成员,然后返回该成员。如果没有合格的成员,则返回undefined。
find方法的回调函数可以接受三个参数,即当前值、当前位置和原始数组。
[1, 4, -5, 10].查找((n)=n 0)
//-5
[1, 5, 10, 15].find(function(value,index,arr) {
返回值9;
}) //10findIndex()
findIndex方法与find方法非常相似,因为它返回满足条件的第一个数组成员的位置,如果所有成员都不满足条件,则返回-1。
[1, 5, 10, 15].findIndex(function(value,Index,arr) {
返回值9;
})//2包含()
返回一个布尔值,该值指示数组是否包含给定值。
[1,2,3].包括(2)//trueentries()、键()和值()
ES6提供了三个新方法:entries()、keys()和values()来遍历数组。它们都返回一个遍历对象,可由for遍历.循环的。唯一的区别是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 如果不使用for.循环中,可以手动调用遍历对象的next方法来遍历。
let letter=[a , b , c ];
let entries=letter . entries();
console.log(entries.next()。值);//[0, a]
console.log(entries.next()。值);//[1, b]
console.log(entries.next()。值);//[2, c]【推荐学习:javascript高级教程】以上是es6数组方法有哪些的详细介绍。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。