【发布时间】:2017-03-03 01:31:53
【问题描述】:
我想创建一个复制此对象架构值的算法(此处为示例数据):
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);
}
...
但这不起作用。似乎没有包含任何对象。
如果我用 keyframes[0]] 替换 keyframes],那么它可以工作,但是当所有值(对象)需要插入时,它当然只会获取第一个值(对象)。
最好的方法是什么?
【问题讨论】:
标签: javascript arrays loops dynamic-programming javascript-objects