【问题标题】:Add new object to existing array of objects jquery/javascript将新对象添加到现有的对象数组 jquery/javascript
【发布时间】:2014-03-19 11:10:43
【问题描述】:

我有一个对象数组(包含我的刺激物)和一个函数(见下面的摘录),它收集反应时间并将所有反应时间“推送”到一个全局变量。

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);
            };

现在我想将带有我所有反应时间的变量添加到 stim 作为对象“反应”。 这样最后我就有了所有刺激的反应时间、类型、路径和名称,如下所示:

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 的答案,但这些对我的问题没有帮助。

【问题讨论】:

    标签: javascript jquery arrays indexing


    【解决方案1】:

    假设stimreac_arr 遵循相同的顺序:

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

    这会遍历stim 数组并添加一个reaction 属性,该属性的值是reac_arr 数组对应索引处的值到每个对象。

    【讨论】:

    • 谢谢詹姆斯,好主意。不幸的是,刺激阵列的刺激顺序是随机的。因此,最终我希望有可能看到每个刺激的反应时间。你能想出一种方法来实现这一点吗?
    • 大概您正在访问stim 之外的对象并使用它来做一些事情,然后计算reac_time。如果是这种情况,您仍然应该拥有来自 stim 的对象的引用,并且您可以直接操作它。
    【解决方案2】:

    在您的情况下,stim 是一个对象数组,因此 stim.reaction = react_arr; 不会像您预期的那样工作,因为您实际上是从您的 stim 数组更新 reaction 属性。

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

    stim[index].reaction = react_arr;
    

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

    【讨论】:

      【解决方案3】:

      你应该尝试类似::

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

      【讨论】:

        【解决方案4】:
        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});
        

        你可以迭代得到所有的结果

        【讨论】:

          猜你喜欢
          • 2021-09-06
          • 1970-01-01
          • 1970-01-01
          • 2021-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-19
          相关资源
          最近更新 更多