push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度。新的元素将会依次添加到数组的末尾。html
该函数属于Array对象,全部主流浏览器均支持该函数。数组
语法浏览器
array.push( item1 [,items... ] )
参数函数
参数 描述
item1 任意类型添加到当前数组末尾处的元素。
items 可选参数/任意类型要添加到当前数组末尾处的其余项,能够有多个。
注意:若是添加的元素类型为数组类型(Array),仍然会被看成一个元素看待,只是这个元素是数组类型而已。若是要合并两个数组,请使用concat()函数。
返回值字体
push()函数的返回值为
返回添加元素后的数组长度。编码
当向数组中添加新的元素时,数组的length属性也会随之改变。通常而言,数组的length属性将会加N(N为添加的元素个数)。prototype
示例&说明视频
// 定义一个数组对象
var array = ["CodePlayer", true];
document.writeln(array.length); // 2htm
// 向数组中添加一个元素
var newLength = array.push("http://www.365mini.com");
document.writeln(array); // CodePlayer,true,http://www.365mini.com
document.writeln(newLength); // 3对象
// 一次性添加多个元素
newLength = array.push(2, 3, "Hello");
document.writeln(array); // CodePlayer,true,http://www.365mini.com,2,3,Hello
document.writeln(newLength); // 6
// 数组也会被看成其中的一个元素进行添加
newLength = array.push(false, [15, 12]);
// 输出内容最后面的"15,12"是一个元素的输出,只不过该元素是数组
document.writeln(array); // CodePlayer,true,http://www.365mini.com,2,3,Hello,false,15,12
document.writeln(newLength); // 8
运行代码
js中针对数组操做的方法仍是比较多的,今天忽然想到来总结一下,也算是温故而知新吧。不过不会针对每一个方法进行讲解,我只是选择其中的一些来说,感兴趣的朋友能够研究一下
js中针对数组操做的方法仍是比较多的,今天忽然想到来总结一下,也算是温故而知新吧。不过不会针对每一个方法进行讲解,我只是选择其中的一些来说。
首先来说一下push和pop方法,这两个方法只会对数组从尾部进行压入或弹出,并且是在原数组进行操做,任何的改动都是会影响到操做的数组。push(args)能够每次压入多个元素,并返回更新后的数组长度。pop()函数每次只会弹出最后一个结尾的元素,并返回弹出的元素,若是是对空组数调用pop()则返回undefined。 若是参数是数组则是将整个数组当作一个元素压入到原来的数组当中。并不会产生相似concat合并数组时产生的“拆分现象”,下面看例子
例1:
var oldArr=[1,2,3];
alert(oldArr.push(4,[5,6]))–>5(这里只会将[5,6]当作一个元素来计算,返回更新后的数组长度5)
此时oldArr–>[1,2,3,4,[5,6]]
alert(oldArr.pop())–>[5,6](这里弹出最后一个元素[5,6],而不是6)
此时oldArr–>[1,2,3,4]
oldArr.pop()–>4
oldArr.pop()–>3
oldArr.pop()–>2
oldArr.pop()–>1
oldArr.pop()–>undefined(空数组弹出)
如今讲完push和pop再来看一下unshift和shift
这两个方法都是经过对数组的头部进行的操做,其余基本跟push和pop相似,可是在IE中unshift方法返回的是undefined
例2:
var oldArr2=[1,2];
oldArr2.unshift(3)–>undefined
此时oldArr2为–>[3,1,2]
oldArr2.shift()–>3
此时oldArr2为[1,2]
接下来看一下功能强大一点的splice,利用其能够进行数组随意位置的元素添加,删除 ,其操做也是在原有
数组上修改
splice(start,deleteCnt,args) 中的start表示开始操做下标,deleteCnt表示从开始下标开始(包括该元素)要删除的元素个数,删除操做返回删除的元素。args表示用来替换删除掉的那些元素(能够有多个参数),start和deleteCnt必须为数字,若是不是数字尝试转换,转换失败当作0来处理。splice必须至少有一个start元素,不然不作任何操做。deleteCnt不存在表示删除start及后面的所有元素(IE下,取0不作删除)。start能够为负数,表示从数组右边结尾处开始计算。deleteCnt若是为负数不作删除,由于不可能删除负个元素。
好了解释就到这边如今看一下例子,经过例子或许能够更好的理解
例3:
var oldArr3=[1,2];
oldArr3.splice()–>”"(返回空的字符串,不作任何操做,操做后oldArr3–>[1,2])
oldArr3.splice(“”)–>[1,2](“”尝试转换为数字失败返回0,因此删除1,2,操做后oldArr3–>[],可是IE下有点恶心,不作任何操做)
oldArr3.splice(“1a”)–>同上
odlArr3.splice(0,2)–>[1,2](“从下标0的元素开始,删除两个元素1,2所以删除后oldArr3–>[])
oldArr3.splice(0,-1)–>”"(从0下标开始删除-1个元素,故等于没作任何操做,操做后oldArr3–>[1,2])
oldArr3.splice(1,1)–>2(从下标1 开始删除1个元素,即删除2,因此删除后oldArr3–>[1])
oldArr3.splice(1,4)–>2(从下标1 开始删除4个元素,1开始只有1个元素,故删除2,因此删除后oldArr3–>[1])
oldArr3.splice(-1,0,3)–>”"(从下标-1即2元素开始删除0个元素,而后添加元素3,因此操做后oldArr3–>[1,3,2])
oldArr3.splice(-1,1,3)–>2(从小标-1即2元素开始删除1个元素,而后添加元素3,操做后为oldArr3–>[1,3])
OK接下来开始讲concat,这个方法用来链接两个或多个数组,该数组不会改变原来的数组只会返回新的一个数组。链接的时候参数若是为数组,则链接的是数组中的元素。由于比较简单直接开始例子
例4:
var oldArr4=[1,2];
oldArr4.concat(3,4)–>[1,2,3,4]
oldArr4.concat(3,4,[5,6])–>[1,2,3,4,5,6](这边添加的是[5,6]中的元素5和元素6)
oldArr4.concat(3,[4,[5,6]])–>[1,2,3,4,[5,6]](这边最里层的元素[5,6]整个用来添加,而不是拆开)
下面来说数组中的排序方法sort
sort(function)是针对原数组进行的排序,不会生成新的数组。默认sort()不带参数时按照数组中的元素转换成字符串进行比较,比较的时候按照字符在字符编码中的顺序进行排序,每一个字符都有一个惟一的编码与其对应。
且看下面例子
var oldArr5=[3,1,5,7,17] 看这个通常观念上觉得对oldArr5排序时oldArr5.sort()会按照数字从小到大排序即返回[1,3,5,7,17],可是看一下结果其实否则返回的是[1,17,3,5,7] 由于比较的时候都被转成字符串。而后对字符串进行一个个的比较若是第一个字符相同则比较第二个,不然直接返回比较结果,由于”17″<”3″因此可想而知排序的结果就不是通常印象中的那个结果了。
sort(function)方法除了默认的无参外还能够传入自定义的排序方法,这样排序的结果彻底能够由本身来控制了,想怎么排就怎么排,是否是很爽啊,呵呵。 通常自定义的function比较函数,包含两个参数分别表明用来比较的左元素和右元素。而后经过必定方式返回一个结果,若是返回值大于0表示交换左右元素,若是返回值小于0或等于0则表示不不会交换左右元素。如今来看一下例子
例5:
按照数字从大到小排列原有数组
复制代码代码以下:
var oldArr5=[3,1,5,7,17]; //初始数组
function mySort(left,right){
if(left<right){
return 1;}//若是左边元素小于右边元素则交换两数
else{
return -1;}//若是左边元素大于等于右边元素不作交换
}
固然上面的方法能够简化为funaction mySort(left,right){ return right-left;}
复制代码代码以下:
//按照偶数在前奇数在后排序
var oldArr6=[3,6,7,18];//初始数组
function mySort2(left,right){
if(left%2==0)return -1;//若是左边元素为偶数则不交换
if(right%2==0)return 1; //若是右边元素为偶数则交换
return 0; //不交换
}
最后的slice很少讲,只是用来截取原数组中的部分元素,返回一个新的数组,原数组不会改变,其操做方式跟string的slice相似
复制代码代码以下:
var oldArr7=[1,2,3,4];
oldArr7.slice(0)–>[1,2,3,4]
oldArr7.slice(0,2)–>[1,2]
oldArr7.slice(0,0)–>[]
oldArr7.slice(0,-1)–>[1,2,3]
oldArr7.slice(-3,-1)–>[2,3]
oldArr4.slice(-1,-3)–[]
Js数组的操做push,pop,shift,unshift等方法详细介绍
JavaScript Array 对象
Array 对象
Array 对象用于在单个的变量中存储多个值。
建立 Array 对象的语法:
new Array();
new Array(size);
new Array(element0, element1, ..., elementn);
参数
参数 size 是指望的数组元素个数。返回的数组,length 字段将被设为 size 的值。
参数 element ..., elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时,新建立的数组的元素就会被初始化为这些值。它的 length 字段也会被设置为参数的个数。
返回值
返回新建立并被初始化了的数组。
若是调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0。
当调用构造函数时只传递给它一个数字参数,该构造函数将返回具备指定个数、元素为 undefined 的数组。
当其余参数调用 Array() 时,该构造函数将用参数指定的值初始化数组。
当把构造函数做为函数调用,不使用 new 运算符时,它的行为与使用 new 运算符调用它时的行为彻底同样。
Array 对象属性
属性 描述
constructor 返回对建立此对象的数组函数的引用。
length 设置或返回数组中元素的数目。
prototype 使您有能力向对象添加属性和方法。
Array 对象方法
方法 描述
concat() 链接两个或更多的数组,并返回结果。
join() 把数组的全部元素放入一个字符串。元素经过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素
slice() 从某个已有的数组返回选定的元素
sort() 对数组的元素进行排序
splice() 删除元素,并向数组添加新元素。
toSource() 返回该对象的源代码。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值
JavaScript数组函数unshift、shift、pop、push使用实例
投稿:junjie 字体:[增长 减少] 类型:转载 时间:2014-08-27 我要评论
这篇文章主要介绍了JavaScript数组函数unshift、shift、pop、push使用实例,本文先是讲解了声明数组的方法,而后对4个函数使用给出了一些例子,须要的朋友能够参考下
如何声明数组
s中数组的声明能够有几种方式声明
复制代码 代码以下:
var tmp = []; // 简写模式
var tmp = new Array(); // 直接new一个
var tmp = Array(); // 或者new也能够
在new数组的时候能够传入一个参数,表示数组的初始化长度
复制代码 代码以下:
// new的时候传入一个参数表示初始化数组长度
var tmp = new Array(3);
alert(tmp.length); // 3
但若是你想建立一个只有一个元素3的数组,那么使用 new 方法是不能实现的,由于系统会把你传入的3看成数组的长度,除非你使用引号引发来看成字符串,如
复制代码 代码以下:
var tmp = new Array('3');
alert(tmp); // 3
咱们可使用简写模式建立数组,这样就能够建立只有一个数字元素3的数组
复制代码 代码以下:
var tmp = [3]
alert(typeof tmp[0]); // number
也能够初始多个元素,而且元素的值能够是任意类型
复制代码 代码以下:
// 简约模式建立数组
// 数组的元素能够是任意一种数据类型
var tmp = [3,true,8.5,{'name':'lizhong'},['a','b']];
alert(tmp.length); // 5
1、unshift 在数组第一个元素前插入元素
复制代码 代码以下:
// 使用unshift在数组第一个元素前插入元素
// 返回数组长度
var tmp = ['a','b'];
var len = tmp.unshift('c');
alert(len); // 3
alert(tmp); // c,a,b
也能够一次插入多个元素,顺序依次从左边排起
复制代码 代码以下:
// 使用unshift在数组第一个元素前插入元素
// 返回数组长度
var tmp = ['a','b'];
var len = tmp.unshift('c','d');
alert(len); // 4
alert(tmp); // c,d,a,b
2、shift弹出数组第一个元素,返回被弹出的元素值
小实例:
复制代码 代码以下:
// 使用shift弹出数组第一个元素
// 返回被弹出的元素值
var tmp = ['a','b','c'];
var val = tmp.shift();
alert(val); // a
alert(tmp); // b,c
若是是一个空数组:
复制代码 代码以下:
// 使用shift弹出数组第一个元素
// 返回被弹出的元素值
var tmp = [];
var val = tmp.shift();
alert(val); // undefined
alert(tmp); // 空
3、push在数组末尾添加元素
跟unshift相反,push在数组末尾添加元素,返回添加元素之后的数组长度
复制代码 代码以下:
// 使用push在数组末尾添加多个元素
// 返回数组最新长度
var tmp = ['a','b','c'];
var len = tmp.push('d');
alert(len); // 4
alert(tmp); // a,b,c,d
也能够一次添加多个元素
复制代码 代码以下:
// 使用push在数组末尾添加多个元素
// 返回数组最新长度
var tmp = ['a','b','c'];
var len = tmp.push('d','e','f');
alert(len); // 6
alert(tmp); // a,b,c,d,e,f
4、pop函数删除数组末尾元素
跟shift相反,pop弹出的是数组末尾元素,返回被弹出的元素值
复制代码 代码以下:
// 使用pop弹出数组末尾元素
// 返回被弹出的元素值
var tmp = ['a','b','c'];
var val = tmp.pop();
alert(val); // c
alert(tmp); // a,b
若是数组为空,返回undefined
复制代码 代码以下:
// 使用pop弹出数组末尾元素
// 返回被弹出的元素值
var tmp = [];
var val = tmp.pop();
alert(val); // undefined
alert(tmp); // 空
利用以上四个函数,咱们能够作一些队列处理,具体案例就不写代码了。
push功能其实也能够这么实现
复制代码 代码以下:
var tmp = ['a','b','c'];
tmp[tmp.length] = 'd';
alert(tmp); // a,b,c,d
注意:以上四个函数unshift、shift、pop、push函数操做都会在数组自己上修改。