现在的位置: 首页 > 编程语言 > 正文

JavaScript push() 方法详解

2019年10月12日 编程语言 ⁄ 共 1531字 ⁄ 字号 暂无评论
博客主机

push定义和用法

push() 方法主要用于向数组的末尾添加一个或多个元素,其返回值为添加后新的长度,即push后的数组长度,该值为number类型。

注意:

1.一定是在数组的末尾添加
2.该方法会改变原数组的长度
3.如果需要在数组起始位置添加元素请使用 unshift() 方法

push函数语法

str.push(newele1,newele2,....,neweleX)
参数值说明:

参数 描述
newele1 必需。要添加到数组的第一个元素。
newele2 可选。要添加到数组的第二个元素。
neweleX 可选。可添加多个元素。

说明

push() 方法是把它的参数按顺序进行添加到原数组的尾部,它直接修改了原数组的长度,并不会创建一个新的数组;利用push实现数组进栈功能,出栈可以使用pop方法。

实例

1.一个数组中添加新元素 :

var arr=['红','橙','黄'];
var result=arr.push('绿','蓝');
console.log(arr);//输出arr数组内容:["红", "橙", "黄", "绿", "蓝"]
console.log(result);//输出push返回的结果:5
console.log(typeof result);//结果类型:number

2.小技巧,把一个数组的值赋值到另一个数组上:

var arr1=['红','橙','黄'];
var arr2=[];
arr2.push(...arr1);//这样arr1中的值就赋值给了arr2上了
console.log(arr2);//输出:["红", "橙", "黄"]
备注:这里使用了es6的扩展运算符(...),它主要是将一个数组转为用逗号分隔的参数序列。console.log(...[ '红','橙','黄' ])等价于:console.log('红','橙','黄' )

3.高级知识,在对象中使用push

a:在对象中需要添加push的属性,其值为数组原型链的push方法,如下:

var obj = {
name:'fly63',
push:Array.prototype.push
};
obj.push('测试');
console.log(obj[0]);//输出:测试
console.log(obj);//输出:{0: "测试", name: "fly63", length: 1, push: ƒ}
console.log(obj.length);//输出:1,对象默认是没有length属性的,这里使用了push方法,则会创建一个length属性
备注:这里push进去的值默认为第一个,这是由于push是根据 length 属性来决定从哪里开始插入给定的值,上述例子中并未声明length属性,则会创建length属性。验证一下:

var obj = {
name:'fly63',
length:2,//'2'也可以,只有length能被转换为数值即可
push:Array.prototype.push
};
obj.push('测试');
console.log(obj[2]);//输出:测试
console.log(obj);//输出:{2: "测试", name: "fly63", length: 3, push: ƒ}
由此可见:push会根据对象length属性的值去确定插入的位置,当length不存在,或者不能被转为一个数值的时候,则插入的元素索引默认为 0

b.利用call() 或 apply() ,如下:

var obj = {
name:'fly63',
};
Array.prototype.push.call(obj,'测试');
//或者Array.prototype.push.apply(obj,['测试']);
console.log(obj[0]);//测试

给我留言

留言无头像?