首页 新闻 会员 周边

js数组 unshift,push 添加的是数字?

0
悬赏园豆:100 [已解决问题] 解决于 2018-01-27 17:52

add () {

     this.count += 1   //控制变量
     var a = ''
     (chartList)  //一个数组装着20个对象
     a= this.chartList.slice((this.count-1)*5,(this.count-1)*5+5)  //截取5个数据
     console.log(this.count, 123)

     if (this.count<=1) {
          this.arr = a //进入页面显示五个
     } else {
       this.arr = this.arr.unshift(a) //变量大于1,我就让截取后面的五个放入到数组前面
       console.log(this.arr, '????????')  打印的数字 6
     }
     console.log(this.arr, 'shi')  //  6
  }
  
  
  请问这是什么原因啊?
菜鸟wl的主页 菜鸟wl | 初学一级 | 园豆:16
提问于:2018-01-11 09:07
< >
分享
最佳答案
1

你调用的时候是不是直接add () 这样用的,而且你这样在构造函数中this.count += 1,这样写是错误的,现在你的问题应该你在直接add () 前,外面有了一个a 的全局变量, window.a=0 或者 a =0 或者 var a=0 ,
(构造函数没用new运算符,内部this即为window)
所以当你在调用add函数时,没报错而走下来到:this.count +=1,此时this.count == 1,接下来走到if (this.count<=1) 时,就先this.arr = a,此时this.arr.length  == 5 , 当你再一次add ()  时直接走的是else这一块,
即this.arr = this.arr.unshift(a),而此时的a原本也是5个长度的数组,但是你用了unshift,导致,把a当成一个对象插到了前面,些时this.arr.length  == 6,而unshift这个数组方法,在每次加入了对象后,就会返回,新数组的长度,所以此时
实际的 this.arr值为  this.arr==6,不是unshift,push这两货填的是数字,是他们返回的是数字,不知楼主明白了没有,我看快下班了,纯手打,望给满分

收获园豆:100
MrZou | 菜鸟二级 |园豆:300 | 2018-01-11 17:16

关键点就是---------不是unshift,push这两货填的是数字,是他们返回的是数字,题主js基础还要多学习的,构造函数不能这么用的

MrZou | 园豆:300 (菜鸟二级) | 2018-01-11 17:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册