本文主要是介绍对象的扁平化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
开发中,有时候,一个对象嵌套得比较深,如果我们想看这个大对象中有没有这个属性,需要一层层地打开才能看到有没有这个属性,我们可以把一个对象扁平化,把大对象的所有属性抽取出来组成一个对象。这样查看起来会方便很多。
var _toString = Object.prototype.toString;Z.isObject = function(obj) {return _toString.call(obj) === '[object Object]';}Z.keys = function(obj) {if(!Z.isObject(obj)) return;if(Object.keys) {return Object.keys(obj);}else {var result = [];var index = 0;for(var key in obj) {_hasOwnProperty.call(obj,key) && (result[index++] = obj[key]);}return result;}}Z.flatten = function(obj,overwrite) {//键值越前越深就可能会被后面的覆盖if(!Z.isObject(obj)) {return ;}var keys = Z.keys(obj);var len = keys.length;var result = {};for(var index = 0; index < len; index++) {var value = obj[keys[index]];if(Z.isObject(value)) {var ret = Z.flatten(value,overwrite);var _keys = Z.keys(ret);var _len = _keys.length;for(var _index = 0; _index<_len;_index++) {var _key = _keys[_index];(result[_key] && !overwrite) || (result[_key] = ret[_key]); }}else {(result[keys[index]] && !overwrite) || (result[keys[index]] = value); }}return result;}
这篇关于对象的扁平化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!