Angularjs合并两个对象忽略空和缺失值 [英] Angularjs merge two objects ignoring null and missing values
本文介绍了Angularjs合并两个对象忽略空和缺失值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有关例如由这两个对象
VAR object1 = {
色:黄,
大小:空,
时代:7,
重:空
}VAR = Object2的{
色:蓝,
大小:51,
时代:空
}
我想这(对象2覆盖对象1,除了空的属性或属性,他不具有):
{
色:蓝,
大小:51,
时代:7,
重:空
}
angular.extend(object1,Object2的)的作品,但覆盖的年龄属性设置为null。
解决方案
您可以调用扩展之前删除对象2空属性。
\r
\r\r
\r VAR对myApp = angular.module('对myApp',[]);\r
\r
VAR object1 = {\r
色:黄,\r
大小:空,\r
时代:7,\r
重:空\r
}\r
\r
VAR内部= {\r
名:我,\r
时代:9,\r
无中生有:空\r
}\r
\r
VAR = Object2的{\r
色:蓝,\r
大小:51,\r
时代:空,\r
内:内\r
}\r
\r
功能removeNullIn(道具,OBJ)\r
{\r
VAR PR = OBJ [道具]\r
如果(PR ===空|| PR ===未定义)删除OBJ [道具]\r
否则,如果(typeof运算PR ==='对象')为(VAR我在PR)removeNullIn(I,PR);\r
}\r
\r
功能removeNull(OBJ)\r
{\r
对于(OBJ中我VAR){\r
removeNullIn(I,OBJ);\r
}\r
}\r
\r
removeNull(Object2的);\r
\r
VAR mergedObject = angular.extend(object1,Object2的);\r
的console.log(mergedObject);
\r
&LT;脚本src=\"https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js\"></script>$c$c>$p$p>\r
For instance, from these two objects :
var object1 = {
"color": "yellow",
"size" : null,
"age" : 7,
"weight" : null
}
var object2 = {
"color": "blue",
"size" : 51,
"age" : null
}
I want this (object 2 overrides object 1 except for null properties or properties he doesn't have) :
{
"color": "blue",
"size" : 51,
"age" : 7,
"weight" : null
}
angular.extend(object1, object2) works but overrides age property to null
解决方案
You can remove the null properties in object 2 before calling the extend.
var myApp = angular.module('myApp',[]);
var object1 = {
"color": "yellow",
"size" : null,
"age" : 7,
"weight" : null
}
var inside = {
"name": "me",
"age" : 9,
"nothing": null
}
var object2 = {
"color": "blue",
"size" : 51,
"age" : null,
"inside" : inside
}
function removeNullIn(prop, obj)
{
var pr = obj[prop];
if(pr === null || pr === undefined) delete obj[prop];
else if(typeof pr === 'object') for (var i in pr) removeNullIn(i, pr);
}
function removeNull(obj)
{
for (var i in obj) {
removeNullIn(i, obj);
}
}
removeNull(object2);
var mergedObject = angular.extend(object1, object2);
console.log(mergedObject);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
这篇关于Angularjs合并两个对象忽略空和缺失值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文