整理---产品对比处理JSON


//参考海外
function
formatProCompareJson(arr, flag) { //const _arr=arr; var _arr = JSON.parse(JSON.stringify(arr)); var len = _arr.length; //var r=Object.assign({}, _arr[0]); var r = _arr[0]; var _o = new Array();
//使用for(var i in len)循环数组时,在ie8下会报错,
for (var i = 1; i < len; i++) { _o = _arr[i]; for (var n in r) { if (n in _o) { for (var k in r[n]) { //小组 if (!(k in _o[n])) { _o[n][k] = ''; } } } else { _o[n] = {}; for (var k in r[n]) { //小组 _o[n][k] = '' } } } for (var j in _o) { //大组 if (j in r) { for (var k in _o[j]) { //小组 r[j][k] = k in r[j] ? additems(r[j][k], _o[j][k] || "", true) : additems(i, _o[j][k] || "", true) } } else { r[j] = {}; for (var k in _o[j]) { //小组 r[j][k] = k in r[j] ? additems(r[j][k], _o[j][k] || "", true) : additems(i, _o[j][k] || "", true) } } } } for (var i in r) { //最后过滤 for (var j in r[i]) { var _r = r[i][j]; if (typeof (_r) == "string") { r[i][j] = additems(len, _r, false); } //清理空元素 if (isAllEqual(_r) && _r[0] === "") delete r[i][j]; } if ($.isEmptyObject(r[i])) delete r[i]; } return r; // function additems(item, str, _flag) { var _A = []; if (_flag) { if (typeof (item) == "string") { _A = [delallicon(item)]; } else if (typeof (item) == "number") { for (var i = 0; i < item; i++) { _A[i] = ""; } } else { _A = item; } _A.push(delallicon(str)); } else { _A.push(delallicon(str)); for (var i = 1; i < item; i++) { _A[i] = ""; } } return _A; } //判断数组元素是否相等 function isAllEqual(array) { if (array.length > 0 && typeof (array) == "object") { return !array.some(function (value, index) { return value !== array[0]; }); } else { return true; } } //删除多余逗号 function delallicon(str) { s = $.trim(str); s = s.replace(/^\,{1,}/, ""); s = s.replace(/\,{1,}$/, ""); s = s.replace(/\,{2,}/g, ","); return s; } }

 

posted @ 2019-06-27 15:00  一块一  阅读(191)  评论(0)    收藏  举报