【发布时间】:2023-03-15 20:30:01
【问题描述】:
我如何pre-填充一个包含一些 css 属性的 JSON 对象。在哪里我需要将所有 not-contained 属性添加到前一个对象,并且对所有下一个项目都相同?
我需要的语句:
if (property is not in object) object[property] = $('.foo').css(property);
例如,我们有一个具有以下样式的元素:
.foo {
top: 0;
width: 100px;
}
还有以下keyframe-alike 对象:
var keyframe = {
0: {
top: 0
},
1000: {
top: 100
},
2000: {
width: 100
}
};
这里我们需要填充所有以前的项目,在这种情况下:
0: width = 01000: width = 0
...我们得到这样的结果:
var keyframe = {
0: {
top: 0,
width: 0
},
1000: {
top: 100,
width: 0
},
2000: {
top: 100,
width: 100
}
};
...此外,我们需要预填充所有下一项:
2000: top = 100
结果:
var keyframe = {
0: {
top: 0
},
1000: {
top: 100
},
2000: {
top: 100,
width: 100
}
};
我们的最终对象需要是这样的:
var keyframe = {
0: {
top: 0,
width: 0
},
1000: {
top: 100,
width: 0
},
2000: {
top: 100,
width: 100
}
};
更新
T.J. Crowder answer 到目前为止看起来不错,但是 问题 是我不知道 keyframe-object 中有哪些属性...所以它可以是,还有更多/关键帧中除width 和top 之外的其他属性。
更新2
目前我有以下内容:
var $foo = $('.foo');
for (var key in keyframe) {
var obj = keyframe[key];
for(var ok in obj) {
if (!(ok in obj)) obj[ok] = $foo.css(ok);
}
}
但是好像
if (!(ok in obj)) // is always `truthy`
但是,如果我通过直接声明来做到这一点
if (!('top' in obj)) // it works...
有什么想法吗?
【问题讨论】:
-
在此处查看此答案,它可能会对您有所帮助stackoverflow.com/questions/736590/…
-
There is no such thing as a "JSON object'。您的问题似乎与 JSON 无关。你有 JavaScript 对象。
-
@FelixKling 好的,我同意!这是一个类似于 JSON 的东西。但这无论如何都无济于事:P
-
当然,但正确的术语也很重要 ;)
标签: javascript json object for-loop keyframe