//参考海外
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;
}
}