var course = { teacher :{ teacherId:001, teacherName:"王" }, course : { courseId : 120, courseName : "开心一笑" }, admin : "班主任" } var obj_help = { obj_tansform: function (data, temple) { //子对象转化为指定结构的复杂对象 var _self = this; var callee = function (obj) { for (key in obj) { if (typeof obj[key] === "object" && (!_self.obj_isArray(obj[key]))) { obj[key] = callee(obj[key]); } else { obj[key] = data[key] ? data[key] : ""; } } return obj; } return callee(temple); }, obj_revange: function (data) { //转化为简单对象(不存在子对象) var _self = this; var _data = {}; var Rcallee = function (obj) { for (key in obj) { if (typeof obj[key] === "object" && (!_self.obj_isArray(obj[key]))) { obj[key] = Rcallee(obj[key]); } else { _data[key] = obj[key]; } } } Rcallee(data); return _data; }, obj_isArray: function (arr) { return arr != null && typeof arr === "object" && 'splice' in arr && "join" in arr; }, removeBlank: function (str) { try { return str.replace(/(^\s*)|(\s*$)/g, ""); } catch (e) { console.log(str); } } } console.log(obj_help.obj_revange(course));
输出结果json
假若这样调用ide
var teacherMes = { teacherName:"", course:{ teacherId :"", courseMes :{ courseId:"", courseName:"", admin:"" } } } var data = obj_help.obj_revange(course); console.log(obj_help.obj_tansform(data,teacherMes));
那么输出结果函数
第一个函数是按照你给的模版初始化对象,第二个是把复杂的对象的子对象的属性所有提取到同一个对象下,this
实际的能够使用的地方并很多,好比后台返回的json是一个复杂的对象,那么你能够直接简单化处理,一样提交数据时使用按照模版格式化数据后提交。spa
能够大大的减小因为属性在子对象下形成的困扰。3d