2 imaginecode ImagineCode 于 2016.04.24 14:54 提问

Javascript 数组覆盖问题

有这么一段代码:

        var datas=[];
        var data={};
        var i=0;
        $(".baby-panel").each(function(){
            var baby_id=$(this).children(".babyid").attr("baby_id");
            var baby_name=$(this).children(".babyname").find("input[name='baby"+i+"_name']").val().trim();

            var baby_sex=$(this).children(".babysex").find("input[type=radio]:checked").val();
            var baby_birth=$(this).children(".babybirth").find(".form-control").val();

            data["id"]=baby_id;
            data["name"]=baby_name;
            data["sex"]=baby_sex;
            data["birth"]=baby_birth;

            datas[i]=data;
            i++;
        });

**问**:如何循环将data的数据添加到datas中,现在datas的数据都是data的最后一条记录。
例如:data={["id":1,"name":1,"sex":1,"birth":2014-05-05],["id":2,"name":2,"sex":2,"birth":2014-06-05]}

经过each()遍历后,datas的输出**却是**[{"id":"2","name":"2","sex":"2","birth":"2014-06-05"},{"id":"2","name":"2","sex":"2","birth":"2014-06-05"}],

而不是:[{"id":"1","name":"1","sex":"1","birth":"2014-05-05"},{"id":"2","name":"2","sex":"2","birth":"2014-06-05"}]

3个回答

ImagineCode
ImagineCode   2016.04.24 16:58
已采纳

解决方法:

            var datas=[];
    //var data={};//把data放到循环里面,否则会覆盖
    var i=0;
    $(".baby-panel").each(function(){
                    **  var data={};//每次新建一个data**
        var baby_id=$(this).children(".babyid").attr("baby_id");
        var baby_name=$(this).children(".babyname").find("input[name='baby"+i+"_name']").val().trim();

        var baby_sex=$(this).children(".babysex").find("input[type=radio]:checked").val();
        var baby_birth=$(this).children(".babybirth").find(".form-control").val();

        data["id"]=baby_id;
        data["name"]=baby_name;
        data["sex"]=baby_sex;
        data["birth"]=baby_birth;

      **  datas.push(data);**
        i++;
    });
CSDNXIAOD
CSDNXIAOD   2016.04.24 15:02

javascript数组问题
JavaScript规范之数组
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

ImagineCode
ImagineCode 不是我想要的
大约 2 年之前 回复
u013321534
u013321534   2016.04.24 15:46

用数组的push方法加进来

ImagineCode
ImagineCode push也是一样的结果
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
js 二维数组值被覆盖问题
 var testTask =new Array();
javascript document.write()覆盖原文档的问题
有时候使用javascript 中的document.write()函数,会将原来的html全部清除,然后写上新内容,但有时候不会 于是这种情况什么时候会出现呢?我搜了下: http://www.blogjava.net/JAVA-HE/archive/200
JavaScript函数同名覆盖问题
在JavaScript脚本中,局部函数与外围函数同名,则会覆盖掉外网函数,即变量可以重复定义。 见下面的例子。 A = function(){ var me = this; me.method1 = function(){ var items = [1,2,3,4,5]; for(var i=0;i<items.length;i++){ if(1){ var ite
php数组覆盖问题
$add[$img_name] = $file['save_name']; //拼接数组添加 $add = [ 'title' => trim($_POST['title']), 'sec_title' => trim($_POST['sec_title']), 'starttime' => $starttime, 'endtime' => $endtime, 'publish_time'
JavaScript中处理全局变量
js如何避免变量冲突
javascript push一个对象遇到的问题。
在appcan中使用js数组 push一个对象遇到的问题
strcpy()和memcpy()函数中忽略的内存覆盖问题
strcpy()函数和memcpy()函数都没有处理内存覆盖问题,甚至于
JavaScript多个数组的合并操作
1、原生的JavaScript实现 var array1 = ["a", "b"]; var array2 = ["c", "d"]; 我要合并后变成下面这样: var array= ["a", "b", "c", "d"]; 应该用什么方法呢?
python 循环不覆盖
适用:nd.array 矩阵 例子:判断矩阵里面每一行的元素是否等于一个数,最后拼成一个0,1矩阵。 data=np.array([[1, -1, 1, 1, 1, -1],[1, -1, 1, 1, -1, -1]]) mar=np.zeros([2,6])for i in range(2): c = data[i, :] == -1 mar[i, :]
js函数覆盖
var m=1;  function add(n){ return n+1; } x=add(1); alert(x); function add(n){ return n+3; } y=add(1); alert(y); 其中x、y的值均为4 //同名函数,后面的覆盖前面的,即:当调用该函数时,调用的是最后一个函数