Angularjs合并两个忽略null和缺失值的对象
Angularjs merge two objects ignoring null and missing values
例如,从这两个对象:
var object1 = {
"color": "yellow",
"size" : null,
"age" : 7,
"weight" : null
}
var object2 = {
"color": "blue",
"size" : 51,
"age" : null
}
我想要这个(对象2覆盖对象1,除了空属性或他没有的属性):
{
"color": "blue",
"size" : 51,
"age" : 7,
"weight" : null
}
angular.extend(对象1,对象2)有效,但将age属性重写为空
您可以在调用扩展之前删除对象2中的null属性。
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>
您可以将此函数用作自定义扩展机制,而不是本地angular.extend.
/**
* Extends dst with props from src
* @see
* customExtend({a: 1, test : 1}, {b: 1, test : 2});
* //this will return {a: 1, b: 1, test: 2}
* @returns {Object}
*/
var customExtend = function (/* [emptyObject], dst, src */) {
var $$args = Array.prototype.slice.call(arguments, 0);
if ($$args.length === 3) {
$$args.shift();
}
for (var i in $$args[1]) {
if ($$args[1][i] !== null || angular.isUndefined($$args[1][i])) {
$$args[0][i] = $$args[1][i];
}
}
return $$args[0];
};
angular.customExtend = customExtend;
相关文章:
- 谷歌地图API-“;toGeoJson”;返回几何体为null的对象
- 验证对象是否为null Javascript/Angularjs
- 对象为null或IE9中存在未定义错误
- 如何计算一个对象中五个属性中有多少是非null的
- Microsoft JScript运行时错误:无法获取属性'的值;样式':对象为null或未定义
- javascript对象显示为null,但object.properties返回数据
- global.getElementById('..')为null或不是对象
- IE8错误:为null或不是对象,但仍然可以跟踪/控制台注销
- AJAX请求中的JSON对象为Null或空
- Highcharts无法设置属性'的值;要点':对象为null或未定义
- ui.selectmenu投掷'this.newelement.0'为null或不是对象
- 添加到序列化数组中的复杂对象在服务器端始终为 null
- 什么是 ClojureScript 类似地将不存在的对象值设置为 JavaScript 中的 null
- 最大查询返回带有sequelise.js的null对象
- 从JSON对象中删除jQuery和null对象
- 从客户端到服务器的SocketIO回调没有'不起作用(改为null对象)
- 迭代react元素中的undefined/null对象
- “Interiting"From null对象似乎不会影响性能
- Null对象中属性默认值的赋值
- 在js中捕获null对象