动态地将Array值提取到对象中

时间:2017-03-03 01:31:54

标签: javascript arrays loops dynamic-programming javascript-objects

我想创建一个复制此对象模式值的算法(此处为示例数据):

let layer1 = {name: 'x',
          values: [{_color: '#996666', time: 0, tween: 'quadEaseIn', value: 0},
                   {_color: '#b074a0', time: 4, value: 5.500023},
                   {_color: '#b074a0', time: 3, value: 4.500023},
                   {_color: '#b074a0', time: 2, value: 3.500023}],
          tmpValue: 3.500023,
          _color: '#6ee167',
          _value: 0};

此示例数据的第3行,第4行和第5行与问题相关。

所以下面是目前为止的算法。变量numKeyframes已经定义(n)。在第一个循环中,动态对象被添加到名为关键帧的数组中。

在第二个循环中,关键帧数组包含在图层对象中。这里的想法是关键帧应该插入多个对象来代替它所在的对象(就像上面的示例对象数据一样)。

  ...
  var keyframes = [];
  var timevals = [1, 2, 3, 4, 5]
  for (var k=0; k<numKeyframes; k++) {
    var tv = timevals[k];
    var kf = {_color: '#FF0000', time: tv, value: 3.500023}
    keyframes.push(kf);
  }

  // make x, y, z layers
  for (var i=0; i<3; i++) {
    layer =  {name: layerNames[i],
              values: [{_color: layerValuesColors[i],
                        time: layerValuesTime[i],
                        tween: 'quadEaseIn',
                        value: layerValuesValues[i]},
                        keyframes],
              tmpValue: layertmpValues[i],
              _color: layerColors2[i],
              _value: layerValues[i]}
    layerData.push(layer);
  }
  ...

但这不起作用。似乎没有包含任何对象。

如果我用关键帧[0]]替换关键帧,那么它可以工作,但当需要插入所有值(对象)时,它只获得第一个值(对象)。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为您的代码中没有任何错误,只是使用console.dir函数检查数据结构,如下所示

console.dir(layerData);
相关问题