一、常用方法(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(''));//12345
console.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)); //2
console.log(aN.indexOf(6)); //3
console.log(aN.lastIndexOf(2));//2
console.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,位置为5
console.log(aN2.lastIndexOf(2,5));//5 从第6项即第二个2开始从尾往前找,所以找到是第6项那个2,它的位置是5
console.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);//true
var 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);
})
输出:
2
3
4
5
6
------------------------------------------------------------------------------------------------------------------
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 2
3 3
6 4
10 5
15
------------------------------------------------------------------------------------------------------------------
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 4
9 3
12 2
14 1
15
------------------------------------------------------------------------------------------------------------------
除了求和也可以进行其它运算,例如求数组中所有项的乘积
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)都可以进行扩展,让代码执行效率更快,书写简单。

javascript中数组Array的方法的更多相关文章

  1. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

  2. JavaScript中数组Array.sort()排序方法详解

    JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编 ...

  3. Javascript中数组的判断方法

    摘要: 1.数组检测的方法: 1) typeof . 2) instanceof . 3) constructor . 4) Object.prototype.toString. 5) Array.i ...

  4. javascript中数组常用的方法

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...

  5. javascript中数组常用的方法和属性

    前言 在javascript中,数组是一种非常重要的数据类型,我们时常会和它打交道,最近在开发项目中频繁的使用到数组,但是自己对数组的众多方法已经是非常模糊了,为了方便自己以后能够更好的使用数组中的属 ...

  6. 【前端_js】javascript中数组的map()方法

    数组的map()方法用于遍历数组,每遍历一个元素就调用回调方法一次,并将回调函数的返回结果作为新数组的元素,被遍历的数组不会被改变. 语法:let newAarray = arr.map(functi ...

  7. javascript中数组的concat()方法 - 数组连接

    <html> <head> <title>数组的concat()方法</title> <script> /* 数组的concat()方法: ...

  8. JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some、for in、for of

    JavaScript中有非常多数组迭代方法,这里基本上吧所有的都介绍全了,我项目中比较喜欢的是forEach. 7.for in (for-in循环实际是为循环对象而设计的,for in也可以循环数组 ...

  9. javascript中数组的map方法

    map方法原型:array1.map(callbackfn[, thisArg]) 参数: array1,必选. 一个数组对象.该函数一般用于数组对象 callbackfn,必选. 最多可以接受三个参 ...

随机推荐

  1. hdu 3635 Dragon Balls(并查集)

    Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  2. lvs realserver 配置VIP

    # $# 表示提供到shell脚本或者函数的参数总数: # 1表示只有一个参数. #/bin/bash #file: tun_RS.sh if [ $# -ne 1 ]; then echo “usa ...

  3. 随机序列生成算法---生成前N个整数的一组随机序列

    问题描述: 给定输入N,生成从1开始的:1,2,3,4,......N 一组随机序列,序列中的数不能重复出现. 比如:N=5,合法的随机序列为{4,3,1,5,2} .{3,1,4,2,5}……非法的 ...

  4. 【ASP.NET 插件】zyUpload的HTML5上传插件

    个人能力有限,只能网上找图片批量上传插件,看到一个还不错的插件zyUpload ,可以用来上传文件,但没有.NET 版本,特修改了下用以批量上传图片,效果图如下: update:2016年3月8日 有 ...

  5. 倍增法-lca codevs 1036 商务旅行

    codevs 1036 商务旅行  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 某首都城市的商人要经常到各城镇去做生意 ...

  6. SharePoint Error:a system restart from a previous installation or update is pending

    run:regedit 打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除PendingFileR ...

  7. codeforces gym-101078

    题目链接: http://codeforces.com/gym/101078 A: #include <iostream> #include <cstdio> #include ...

  8. 在mac os下的Apache服务器的cgi中运行python

    我是搬运工.. Running Python Programs on the Mac OS X Apache Web Server The Mac OS X operating system incl ...

  9. UVA 11992 Fast Matrix Operations (二维线段树)

    解法:因为至多20行,所以至多建20棵线段树,每行建一个.具体实现如下,有些复杂,慢慢看吧. #include <iostream> #include <cstdio> #in ...

  10. Apache轻量级性能测试工具

    平时工作中会需要一些性能测试,简单的性能测试完全可以由AB来替代,而不需要动用LR这样重量级的工具. 此文简单介绍一下ab的工具使用与结果分析.当作个笔记,以便以后查阅. 1.安装:要使用AB,需要先 ...