首页 > 网站 > WEB开发 > 正文

javascript中数组Array的方法

2024-04-27 14:20:45
字体:
来源:转载
供稿:网友

javascript中数组Array的方法

一、常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的长度console.log(a); //[1, 2, 3, 40] var b =[1,2,3];console.log(b.pop()); //3 返回最后一项console.log(b); // [1, 2]------------------------------------------------------------------------------------------------------------------unshift shift 对列方法,先进先出var a =[1,2,3];console.log(a.unshift(40));//4 返回数组长度console.log(a); // [40, 1, 2, 3]var b =[1,2,3];console.log(b.shift()); //1 返回取出的第一项console.log(b); // [2, 3]------------------------------------------------------------------------------------------------------------------join方法,将数组合并成字符串var aN=[1,2,3,4,5];console.log(aN.join(''));//12345console.log(aN.join('|'));//1|2|3|4|5

二、排序方法(sort,reverse)reverse 反转方法,即将反转数组顺序var arr = [1,2,3,4,5];console.log(arr.reverse()); //[5, 4, 3, 2, 1]------------------------------------------------------------------------------------------------------------------sort方法,默认按数组升序进行排列,选把数组中所有项应用toString()方法,然后比较得到的字符串,从字符串首位开始比较var arr =[1,14,3,25,5];console.log(arr.sort()); // [1, 14, 25, 3, 5]按字符首字母升序排列结果是:[1, 14, 25, 3, 5],因为1最小,所以1,14最前对于sort方法有一个比较函数,可以扩展其功能function compare(a,b){ if(a<b){ return -1; }else if(a>b){ return 1; }else{ return 0; }}用上面的比较函数对数字进行排序,可以得到我们想要的结果console.log(arr.sort(compare)); // [1, 3, 5, 14, 25];当然这个方法还能简化;console.log(arr.sort(function(a,b){return a-b}));sort方法还有其它应用,例如对数组中项目进行随机排序,扩展方法如下:console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [3, 1, 14, 5, 25]console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [5, 1, 3, 14, 25]console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [1, 5, 3, 25, 14]console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [5, 25, 14, 1, 3]console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [25, 5, 14, 3, 1]执行了五次,得到的结果均不相同

三、concat方法concat方法用于创建一个新数组如果想要复制一个数组,用什么方法,举例如下;var arr =[1,2,3,4,5];var newArr = arr;console.log(newArr);//[1, 2, 3, 4, 5]newArr.push(6);console.log(newArr);//[1, 2, 3, 4, 5, 6]console.log(arr); //[1, 2, 3, 4, 5, 6]可见newArr并不是一个新数组,修改newArr会改变数组,因为数组不是基本数组类型,而是引用类型,所以用=赋值只不过是创建了一个新的引用,修改newArr时会修改堆内存的数据。那么如何得到一个新的和原来一样的数组呢?var newArr1 = arr.concat();console.log(newArr1);//[1, 2, 3, 4, 5]newArr1.push(6);console.log(newArr1);//[1, 2, 3, 4, 5, 6]console.log(arr); //[1, 2, 3, 4, 5]可见修改新数组不会对原数组产生影响。concat方法除了复制数组外,主要用于数组的连接,使用concat方法后会返回一个新的数组var aNumber = [1,2,3];var aNumber2 = [4,5];console.log(aNumber.concat(aNumber2)); //[1, 2, 3, 4, 5]console.log(aNumber); //[1,2,3]当然concat方法还支持字符串与数组的连接console.log(aNumber.concat(7,8)); // [1, 2, 3, 7, 8]console.log(aNumber.concat(7,[11,12])); //[1, 2, 3, 7, 11, 12]

四、slice方法slice基于当前数组创建一个删除某些项的新数组var aN =[1,2,3,4,5];var aN1 = aN.slice(0,2);//截取第0项到第1项console.log(aN); //[1, 2, 3, 4, 5] 原数组不变console.log(aN1); // [1, 2]console.log(aN.slice(1,3));//[2,3] 截取第1项到第2项即截取起始位置到结束位置之间的项,包括起始位置,但不包括结束位置如果只有一个参数,则截取该参数到当前数组末尾所有项console.log(aN.slice(1));//[2, 3, 4, 5]如果slice中的参数有负数,则用该负数加上数组的长度来确定起始位置或结束位置console.log(aN.slice(-2,-1));// [4] 相当于console.log(aN.slice(3,4));

五、splice方法splice方法可用于对原数组的插入、删除、修改,并不会创建一个新数组var aN =[1,2,3,4,5];aN.splice(1,2,'b'); //三个参数分别是起始位置,要删除的项数,需要添加的元素console.log(aN);// [1, "b", 4, 5] 起始位置删除两项得到[1,4,5],然后将元素b插入起始位置由于splice的强大功能可以实现删除,插入,修改功能aN.splice(0,1);//删除第1项aN.splice(1,1);//删除第2项aN.splice(0,0,'a')//在第0项前插入'a'aN.splice(2,0,'a')//在第2项前插入'a'aN.splice(0,1,'b') //将第0项替换成'b'aN.splice(2,1,'b') //将第2项替换成'b'

六、位置方法(indexOf,lastIndexOf)indexOf是得到数组元素在数组中的位置,lastIndefOf是从数组末尾向开头找var aN = [3,4,2,6,5,9];console.log(aN.indexOf(2)); //2console.log(aN.indexOf(6)); //3console.log(aN.lastIndexOf(2));//2console.log(aN.lastIndexOf(6));//3

indexOf和lastIndexOf都可以接收两个参数,第一个表示要查找的项,第二个表示查找的起来位置var aN2 = [1,2,5,4,6,2,4,5,8,2];console.log(aN2.indexOf(2,3));//5 从第4项开始算起,所以取的是第二个2,位置为5console.log(aN2.lastIndexOf(2,5));//5 从第6项即第二个2开始从尾往前找,所以找到是第6项那个2,它的位置是5console.log(aN2.lastIndexOf(2,4));//1 从第5项即6这个数字从尾往前找,所以找到是第2项那个2,它的位置是1

七、迭代方法(every,filter,forEach,map,some)every:对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true.var aN=[1,2,3,4,5]var bFlag = aN.every(function(item){ return item<6})console.log(bFlag);//true

var bFlag2 = aN.every(function(item){ return item<4})console.log(bFlag);//false------------------------------------------------------------------------------------------------------------------some:对数组中的每一项运行给定函数,如果该函数对任一项都返回true,则返回true.var aN=[1,2,3,4,5]var bFlag = aN.some(function(item){ return item==5})console.log(bFlag);//truevar aN=[1,2,3,4,5]var bFlag = aN.some(function(item){ return item==6})console.log(bFlag);//false------------------------------------------------------------------------------------------------------------------filter:对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组var aN=[1,2,3,4,5]var aNewArr = aN.filter(function(item){ return item>2})console.log(aNewArr);// [3, 4, 5]------------------------------------------------------------------------------------------------------------------forEach:对数组中的每一项运行给定函数,这个方法无返回值var aN=[1,2,3,4,5]aN.forEach(function(item){ console.log(++item);})输出:23456------------------------------------------------------------------------------------------------------------------map:对数组中的每一项运行给定函数,返回数组调用的结果组成的数组var aN = [1,2,3,4,5]var aNewArr = aN.map(function(item){ return ++item})console.log(aNewArr);//[2, 3, 4, 5, 6]

八、缩小方法(reduce,reduceRight)reduce()方法从数组第一项开始,逐渐遍历到最后一项,reduceRight()方法从数组最后一项开始,逐渐遍历到第一项var aN = [1,2,3,4,5]var sum = aN.reduce(function(PRev,cru,index,array){ console.log(prev,cru); return prev+cru})console.log(sum);输出1 23 36 410 515------------------------------------------------------------------------------------------------------------------var aN = [1,2,3,4,5]var sum = aN.reduceRight(function(prev,cru,index,array){ console.log(prev,cru); return prev+cru})console.log(sum);输出5 49 312 214 115------------------------------------------------------------------------------------------------------------------除了求和也可以进行其它运算,例如求数组中所有项的乘积var aN = [1,2,3,4,5]var sum = aN.reduce(function(prev,cru,index,array){ return prev*cru})console.log(sum);//120

Javascript中数组的功能相当强大,无论是sort方法还是迭代方法(every,some,filter,forEach,map)或者缩小方法(reduce,reduceRight)都可以进行扩展,让代码执行效率更快,书写简单。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表