有没有这方面的速记方式?
object.position.x = position.x
object.position.y = position.y
object.position.z = position.z
object.rotation.x = rotation.x
object.rotation.y = rotation.y
object.rotation.z = rotation.z
感谢您抽出时间。
有没有这方面的速记方式?
object.position.x = position.x
object.position.y = position.y
object.position.z = position.z
object.rotation.x = rotation.x
object.rotation.y = rotation.y
object.rotation.z = rotation.z
感谢您抽出时间。
是的,你可以使用 Object.assign()
方法。
var obj = {}
var position = {x: 1, y: 2, z: 3}
var rotation = {x: 1, y: 2, z: 3}
obj.position = Object.assign({}, position);
obj.rotation = Object.assign({}, rotation);
console.log(obj)
如果你只想从对象中提取特定属性,可以使用map()
创建您的选择函数来获取对象数组,然后使用展开语法将每个对象分配到一个新的对象。
如果您需要更改翻译内容,请提供明确的指示。
var obj = {}
var position = {x: 1, y: 2, z: 3}
var rotation = {x: 1, y: 2, z: 3}
function pick(obj, props) {
return props.map(e => ({[e]: obj[e]}))
}
obj.position = Object.assign({}, ...pick(position, ['x', 'y']));
obj.rotation = Object.assign({}, ...pick(rotation, ['x', 'y', 'z']));
console.log(obj)
object.position = position;
object.rotation = rotation;
['x', 'y', 'z'].forEach(function (k) {
object.position[k] = position[k];
object.rotation[k] = rotation[k];
});
我的建议:不要使用任何“聪明”的循环和动态破解
原因:
object = {...object, position, rotation}
请注意它会用旧属性替换新属性。
rotation = { ...object.rotation, ...rotation }
,在将旧的 object.rotation
和新的 rotation
合并之前传递给对象,顺便提一下,我们已经用替换后的 rotation
值替换了所有 object.rotation
属性。 - Mohsen你也可以使用 for...in 循环,它简单易读。例如:
for ( const property in position ) {
object.position[property] = position[property];
}
MDN 参考文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...in