新手,json基础应用不会呀

var data=[];
  var jn={};
  var obj;
  $(".btn-success").click(function(){
    $(".list-group li").each(function(e){
      obj=$(".list-group li").eq(e);
      jn.id=obj.attr('id');
      jn.sort=e;
      data.push(jn);
      console.log(jn);
    })
    console.log(data);
  })

图片描述

为什么data里的值都是一样的

阅读 3.3k
3 个回答

因为jn引用的都是同一个对象,你塞了99次同一个jn到data里,所以会一样。

var data=[];
  var obj;
  $(".btn-success").click(function(){
    $(".list-group li").each(function(e){
      obj=$(".list-group li").eq(e);
      var jn={};
      jn.id=obj.attr('id');
      jn.sort=e;
      data.push(jn);
      console.log(jn);
    })
    console.log(data);
  })

改一下再试试

var data=[];
var jn={};
var obj;
$(".btn-success").click(function(){

$(".list-group li").each(function(e,item){
      jn ={};
      jn.id=$(item).attr('id');
      jn.sort=e;
      data.push(jn);
      console.log(jn);
})
console.log(data);

})

对象是引用类型,放在堆里面,当把对象放到数组里时,其实是指向原来的对象,然后,对象变了,也就是数组里面对象变了。(感觉自己说的有些混乱)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题