将新对象添加到现有对象数组jquery / javascript

时间:2014-03-19 11:10:44

标签: javascript jquery arrays indexing

我有一系列对象(包含我的刺激)和一个函数(见下面的摘录),它收集反应时间并推动'所有对全局变量的反应时间。

var stim = [  {name:"A", path:".../a.jpg", type: P}, 
              {name:"A", path:".../a.jpg", type: T}, 
              {name:"A", path:".../a.jpg", type: I}
           ];

var reac_arr = [];

$(function(){ ...    var reac_time = t2-t1;
                     react_arr.push(reac_time);
            };

现在我想将变量与我所有的反应时间一起添加到刺激作为对象"反应"。 所以最后我得到了所有刺激的反应时间,类型,路径和名称,如下所示:

var stim = [  {name:"A", path:".../a.jpg", type: P, reaction: 123}, 
              {name:"A", path:".../a.jpg", type: T, reaction: 876},
              {name:"A", path:".../a.jpg", type: I, reaction: 725}
           ];

我试过了:

stim.reaction = react_arr;

但那不起作用。

我需要这个来分析不同类型刺激的反应时间是如何不同的。我在java上找到了这个问题的答案,但这些并没有帮助解决我的问题。

4 个答案:

答案 0 :(得分:1)

假设stimreac_arr遵循相同的顺序:

stim.forEach(function (s, i) {
    s.reaction = reac_arr[i];
});

这循环遍历stim数组并添加reaction属性,其值是reac_arr数组的相应索引处的值到每个对象。

答案 1 :(得分:1)

在您的情况下,stim是一个Object数组,因此stim.reaction = react_arr;无法按预期工作,因为您实际上正在更新reaction属性stim 1}}数组。

您想要的是从reaction数组中的某个对象更新stim属性。所以你应该使用:

stim[index].reaction = react_arr;

其中index是您要在stim中更新的对象的索引。

答案 2 :(得分:0)

你应该尝试像::

这样的东西
var reac_time = t2-t1;
var temp={name:"A", path:".../a.jpg", type: P, reaction: reac_time}
react_arr.push(temp);

答案 3 :(得分:0)

var stim = [  {name:"A", path:".../a.jpg"}, 
          {name:"A", path:".../a.jpg"}, 
          {name:"A", path:".../a.jpg"}
       ];
stim.pop({name:"A", path:".../a.jpg"});
stim.push({name:"A", path:".../a.jpg", reaction: 725});

你可以迭代得到所有

的结果