JavaScript的Array对象的方法(上)
2016-04-06 00:00
633 查看
一,数组的检测方法
ECMAScript3做出规定,可以使用instanceof操作符来检测数组
ECMAScript5新增了Array.isArray()方法来检测数组
二,数组的转换方法
数组的转换方法,所有的对象都有toLocaleString()、toString()和valueOf()方法。
数组调用toString()方法,会返回数组中每个值的字符串形式拼接的以逗号分隔的字符串;
调用valueOf()方法,返回的还是这个数组。
示例1:
我们发现输出都是red,green,blue,看上去没什么区别
示例2:
数组集成的toLocaleString()、toString()和valueOf()方法,默认都会以逗号分隔字符串的形式返回数组项;那么如果来改变分隔符呢?我们可以使用join()方法,接收一个参数即用作分隔符的字符串。
三,数组重排序方法
1,reverse()方法是反转数组项
示例1:
2,sort()方法对数组进行排序,该方法比较灵活
示例1:
示例2:sort()方法可以传入一个比较函数
示例3:如果想倒序排,怎么办呢?
示例4:对于数值的数组,我们的比较函数可以这样写
四,数组的操作方法
1,concat()方法,该方法是基于当前数组中的所有项创建一个新数组。
如果没有给concat()方法传递参数,则复制当前数组并返回副本;如果传递给concat()方法是一个或多个数组,则会将这些数组中的每一项添加到当前数组中;如果传递给concat()方法的不是一个数组,则这些值会被简单的添加到结果数组的末尾。
2,slice()方法,它能够基于当前数组中的一个或多个项创建一个新数组。
slice()方法接收一个或两个参数,即要返回的项的起始和结束位置;如果传入一个参数,则返回当前传入参数的位置到当前数组结束位置的新数组;如果传入两个参数,则返回起始和结束位置的新数组,但不包括结束位置的项,即前闭后开。注意:slice()不会影响原始数组。
示例:
拓展:如果slice方法的参数中有负数,则用数组的长度加上该负数来确定起始和结束位置
五,splice()方法
方法用途如下:
删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数。例如:splice(0,2);会删除数组中的前两项
插入:可以向指定位置插入任意数量的项,只需提供3个参数:起始位置、要删除的项数和要插入的项。如果插入多项,可以再传入第四项、第五项,以至更多个项。例如:splice(2,0,"red","green")会从当前数组的位置2开始插入字符串"red"和"green"。
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如:splice(2,1,"red","green")会删除当前数组位置2的项,然后再从位置2开始插入字符串"red"和"green"。
注意:splice()方法始终返回一个数组,该数组包含从原始数组中删除的项,如果没有删除任何项,则返回一个空数组。
示例1:删除
如果删除的项的起始位置大于数组的长度
同时如果删除项的起始位置为负数
如果删除项的起始位置为负数,并且该负数的正数值大于数组的长度则删除的永远是第一项
如果要移除的项数大于或等于数组的长度
示例2:插入
插入的参数可以是一个数组
示例3:替换
下一篇:http://my.oschina.net/shenzhenjava/blog/654030
一,数组的检测方法
ECMAScript3做出规定,可以使用instanceof操作符来检测数组
var colors = ["red","green","blue"]; //instanceof如果检测是数组,返回true;如果不是数组,返回false alert(colors instanceof Array);//true alert(typeof colors);//object
ECMAScript5新增了Array.isArray()方法来检测数组
var colors = ["red","green","blue"]; alert(Array.isArray(colors));//true
二,数组的转换方法
数组的转换方法,所有的对象都有toLocaleString()、toString()和valueOf()方法。
数组调用toString()方法,会返回数组中每个值的字符串形式拼接的以逗号分隔的字符串;
调用valueOf()方法,返回的还是这个数组。
示例1:
var colors = ["red","green","blue"]; alert(colors.toString());//red,green,blue alert(colors.valueOf());//red,green,blue alert(colors);//red,green,blue
我们发现输出都是red,green,blue,看上去没什么区别
alert(typeof colors.toString());//string //由于alert()要接收一个字符串参数,所以它会在后台调用toString()方法 alert(typeof colors.valueOf());//object alert(typeof colors);//object
示例2:
var person1 = { toLocaleString:function(){ return "aaaa"; }, toString:function(){ return "bbbb"; } }; var person2 = { toLocaleString:function(){ return "cccc"; }, toString:function(){ return "dddd"; } }; var people = [person1,person2]; alert(people);//bbbb,dddd --调用了对象的toString()方法 alert(people.toString());//bbbb,dddd--调用了对象的toString()方法 alert(people.toLocaleString());//aaaa,cccc--调用了对象的toLocaleString()方法
数组集成的toLocaleString()、toString()和valueOf()方法,默认都会以逗号分隔字符串的形式返回数组项;那么如果来改变分隔符呢?我们可以使用join()方法,接收一个参数即用作分隔符的字符串。
var colors = ["red","green","blue"]; alert(colors.join(","));//red,green,blue alert(colors.join("|"));//red|green|blue //如果不给join()方法传入任何值或者传入undefined,则会以逗号分隔符 //IE7及更早的版本会错误的使用字符串"undefined"作为分隔符,您可以试试! alert(colors.join());//red,green,blue alert(colors.join(undefined));//red,green,blue
三,数组重排序方法
1,reverse()方法是反转数组项
示例1:
var values = [1,2,3,4,5]; values.reverse(); alert(values);//5,4,3,2,1 示例2:对于字符串的数组 var chars = ["abc","aaa","bbb","cccc"]; chars.reverse(); //这种情况下,并没有按照字典顺序进行排序,因此reverse()方法只是对数组进行反转项 alert(chars);//cccc,bbb,aaa,abc
2,sort()方法对数组进行排序,该方法比较灵活
示例1:
var values = [0,1,5,10,15]; values.sort(); //我们看到5是排在最后的,为什么会出现这样的结果呢? //sort()方法比较的是字符串,如果是数值数组,会先将数值转换成字符串 //想深入了解可以参考:http://www.zhihu.com/question/21192050 alert(values);//0,1,10,15,5
示例2:sort()方法可以传入一个比较函数
var values =[0,1,5,10,15]; //比较函数接收两个参数,如果第一个参数比第二个参数小,则返回负数,如果第一个参数 //比第二个参数大则返回正数,如果相等则返回零 function compare(value1,value2){ if(value1<value2){ return -1; }else if(value1>value2){ return 1; }else{ return 0; } } values.sort(compare); alert(values);//0,1,5,10,15
示例3:如果想倒序排,怎么办呢?
//我们只需要将比较函数做一下调整 var values =[0,1,5,10,15]; //比较函数接收两个参数,如果第一个参数比第二个参数小,则返回负数,如果第一个参数 //比第二个参数大则返回正数,如果相等则返回零 function compare(value1,value2){ if(value1<value2){ return 1;//如果第一个参数比第二个参数小返回正数 }else if(value1>value2){ return -1;//如果第一个参数比第二个参数大返回负数 }else{ return 0; } } values.sort(compare); alert(values);//15,10,5,1,0
示例4:对于数值的数组,我们的比较函数可以这样写
var values =[0,1,5,10,15]; function compare(value1,value2){ //如果是第一个参数减去第二个参数表示正序 //如果是第二个参数减去第一个参数表示倒序 return value2 - value1; } values.sort(compare); alert(values);//15,10,5,1,0
四,数组的操作方法
1,concat()方法,该方法是基于当前数组中的所有项创建一个新数组。
如果没有给concat()方法传递参数,则复制当前数组并返回副本;如果传递给concat()方法是一个或多个数组,则会将这些数组中的每一项添加到当前数组中;如果传递给concat()方法的不是一个数组,则这些值会被简单的添加到结果数组的末尾。
var colors = ["red","green","blue"]; var colors2 = colors.concat(); alert(colors2);//red,green,blue var colors3 = colors.concat("yellow",["black","brown"]); alert(colors3);//red,green,blue,yellow,black,brown
2,slice()方法,它能够基于当前数组中的一个或多个项创建一个新数组。
slice()方法接收一个或两个参数,即要返回的项的起始和结束位置;如果传入一个参数,则返回当前传入参数的位置到当前数组结束位置的新数组;如果传入两个参数,则返回起始和结束位置的新数组,但不包括结束位置的项,即前闭后开。注意:slice()不会影响原始数组。
示例:
var colors = ["red","green","blue","yellow","purple"]; var colors2 = colors.slice(1); alert(colors2);//green,blue,yellow,purple var colors3 = colors.slice(1,3); alert(colors3);//green,blue 不包括位置3的"yellow"
拓展:如果slice方法的参数中有负数,则用数组的长度加上该负数来确定起始和结束位置
var colors = ["red","green","blue","yellow","purple"]; var colors2 = colors.slice(-2,0); alert(colors2);//没有任何输出 var colors3 = colors.slice(-2,-1);//相当于colors.slice(colors.length-2,colors.length-1);即colors.slice(3,4); alert(colors3);//yellow
五,splice()方法
方法用途如下:
删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数。例如:splice(0,2);会删除数组中的前两项
插入:可以向指定位置插入任意数量的项,只需提供3个参数:起始位置、要删除的项数和要插入的项。如果插入多项,可以再传入第四项、第五项,以至更多个项。例如:splice(2,0,"red","green")会从当前数组的位置2开始插入字符串"red"和"green"。
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如:splice(2,1,"red","green")会删除当前数组位置2的项,然后再从位置2开始插入字符串"red"和"green"。
注意:splice()方法始终返回一个数组,该数组包含从原始数组中删除的项,如果没有删除任何项,则返回一个空数组。
示例1:删除
var colors = ["red","green","blue"]; var remove = colors.splice(0,1);//删除数组的第一项"red" alert(colors);//green,blue alert(remove);//red
如果删除的项的起始位置大于数组的长度
var remove1 = colors.splice(3,1); alert(colors);//red,green,blue alert(remove1);//没有输入
同时如果删除项的起始位置为负数
var remove2 = colors.splice(-1,1);//相当于colors.splice(colors.length-1,1);即colors.splice(2,1) alert(colors);//red,green alert(remove2);//blue
如果删除项的起始位置为负数,并且该负数的正数值大于数组的长度则删除的永远是第一项
var remove3 = colors.splice(-500,1); alert(colors);//green,blue alert(remove3);//red
如果要移除的项数大于或等于数组的长度
var remove4 = colors.splice(0,4); alert(colors);//空数组 alert(remove4);//red,green,blue
示例2:插入
var colors = ["red","green","blue"]; var insert = colors.splice(1,0,"yellow","black"); alert(colors);//red,yellow,black,green,blue alert(insert);//空数组,因为splice的第二个参数是0
插入的参数可以是一个数组
var insert1 = colors.splice(1,0,["yellow","black"],"brown"); alert(colors);//red,yellow,black,green,blue alert(insert1);//空数组
示例3:替换
var colors = ["red","green","blue"]; var replace = colors.splice(1,1,"red","purple"); alert(colors);//red,red,purple,blue alert(replace);//green
下一篇:http://my.oschina.net/shenzhenjava/blog/654030
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享