复制Javascript对象到另一个对象,不创建新的属性
Copy Javascript Object into another Object, not creating new Properties
假设有两个对象
source = {
name: "A",
address: {
city: "B",
zipcode: "C"
},
car: {
make: "D",
model: "E"
}
};
target = {
name: "",
address: {
city: ""
}
};
现在我想把所有的数据从源复制到目标。但是,只有在目标中已经存在相应的属性时,才必须进行复制。它有点像jQuery的扩展,但没有添加新的属性。使用上述数据,结果将是…
target = {
name: "A",
address: {
city: "B"
}
};
如何轻松实现这一点?
应该这样做:
function extend(target, source) {
for (var prop in source)
if (prop in target) // <== test this
if (typeof target[prop] === "object")
extend(target[prop], source[prop]);
else
target[prop] = source[prop];
}
免责声明:这个简单的方法不适用于数组,可枚举的原型属性,null
值…
不妨将最外层的循环改为
for (var prop in target)
if (prop in source)
取决于两个对象中哪一个要枚举的属性更少
您可以通过target
循环,然后从' source '获取值。我建议使用递归函数,因为你的对象可能有多个子对象。
function fill_in_values(target, source){
for(var prop in target){
if(typeof target[prop] === 'object'){
fill_in_values(target[prop], source[prop]);
}
else{
target[prop] = source[prop];
}
}
}
相关文章:
- 创建属性值数组,其中属性名称以特定字符串结尾
- Do let语句在全局对象上创建属性
- 如何在 javascript 中为策略设计模式创建属性
- 如何在 JavaScript 中基于另一个对象动态创建属性和对象
- 在运行时为对象创建属性
- Javascript对象:动态创建属性和属性名称
- Javascript对象属性-如果不存在,则创建属性
- 如何在使用纯js创建属性时执行某些操作
- 自动创建属性不起作用
- TypeError:无法创建属性'mapTypeId'在字符串'无法加载映射'流星错误
- 可以在任何地方用Javascript创建属性吗?
- 什么时候在当前对象和原型上创建属性?
- 在文字对象中创建属性
- 使用JSON从对象数组创建属性数组
- 如何创建属性
- 如何使用JavaScript在SVG中创建属性
- 当ngAnnotate说“不能创建属性'$methodName'..”是什么意思?
- 无法创建属性'选择'在字符串'信息技术'angularjs
- 在ng模型中动态创建属性
- 如何在ng重复作用域内创建属性