美文网首页
JS 中的push方法

JS 中的push方法

作者: _v_xw | 来源:发表于2017-08-25 16:10 被阅读0次

push方法是数组中的

var arr = []
var length = arr.push('first')
console.log(arr) // ['first']
console.log(length)  // 1 push方法会改变原有数组,且返回改变后数组的长度

尝试添加各种元素

var arr =  []
arr.push({})
console.log(arr)  // [Object] 
arr.push([],{},'str',1,null,undefined) // 添加多个元素用逗号隔开
console.log(arr) // Array, Object, 1, null, undefined

添加多个元素

  • ES6的数组扩展
var arr = [1,2,3]
var nArr = ['first', 'second', 'third'] // 想依次添加每个值到数组中
// arr.push(nArr) 如果这样添加会给arr添加多一个数组元素,arr.length = 4 
arr.push(...nArr) ES6的方法数组扩展 
console.log(arr) //  [1,2,3,'first', 'second', 'third']
// 这种扩展方法仅对Array有效
  • apply使用
var arr = [1,2,3]
var nArr = ['first', 'second', 'third'] // 想依次添加每个值到数组中
Array.prototype.push.apply(arr,nArr) // apply 参数传入使用数组的方式
console.log(arr) //  [1,2,3,'first', 'second', 'third']

对象能用push吗?

  • 直接用是不行的,可以使用call方法来改用

  • 了解V8引擎 push实现的原理

function ArrayPush () {
 var n = TO_UINT32(this.length) // 被push的对象的length
 var m = %_ArgumentsLength() // push的参数个数
 for (var i = 0; i < m; i++) {
   this[i+n] = %_Arguments(i) // 复制元素
 }
 this.length = n + m 
 return this.length 
}
  • 其实就是一个属性复制的过程,索引值为键,添加的参数为值,还添加多一个length属性,所以push方法对对象也是可以使用的,如果对象一开始就使用了索引值为属性名,可能被后面新添加的属性替代
var obj = {}
var obj2 = {0: 'firstValue'}
Array.prototype.push.call(obj, 'first') 
Array.prototype.push.call(obj2, 'first') 
console.log(obj)  // {0: 'first', length: 1}
console.log(obj2) // {0: 'first', length: 1} 原本的'firstValue'会被替代

相关文章

  • JS 中的push方法

    push方法是数组中的 尝试添加各种元素 添加多个元素 ES6的数组扩展 apply使用 对象能用push吗? 直...

  • 前端面试题套路--补充版

    Javascript 基础: 1.js中数组常见的方法: 1.push()末尾添加,返回长度,改变原数组push(...

  • js旋转木马特效

    目标知识点 : 学习js数组的增删方法:(pop()、push()、shift()、unshift()) 练习js...

  • 前端基础面经整理

    一、js中数组增添、删除的方法var ary = [1,2,3,4]增加的方法:1)push数组末尾添加2)uns...

  • 构造模式和数组实现栈

    利用js中完善好的数组实现: 因为js的数组本身是对象,并且封装好了pop()和push()两个方法,所以直接利用...

  • JS数组操作(看这一篇就够了)

    js中对数组操作整理了以下方法 join()   数组转换成字符串 push() 和 unshift()   数组...

  • js中关于真伪数组转换的问题

    在js中碰到关于真伪数组转换的问题,我们经常使用数组原型对象上push方法,再用call或者apply方法来修改t...

  • js数组方法整理

    js数组方法整理 整理了以下数组方法 join() push()和pop() shift() 和 unshift(...

  • https://www.cnblogs.com/zyfeng/p

    js数组方法整理整理了以下数组方法 join() push()和pop() shift() 和 unshift()...

  • JS数组 && ES6扩展

    JS数组创建 1.以 Array 对象的语法创建 2.以 字面量 方法创建 JS数组方法 1.添加元素 push(...

网友评论

      本文标题:JS 中的push方法

      本文链接:https://www.haomeiwen.com/subject/sdiudxtx.html