SOURCE

console 命令行工具 X clear

                    
>
console
var arr = [{
    refundNo: "15951892878",
    busiName: "流量费1",
    busiId: "123456",
    offerName: "销售品1",
    offerId: "111111",
    month: "202110",
    total: "1"
}, {
    refundNo: "15951892878",
    busiName: "流量费1",
    busiId: "123456",
    offerName: "销售品1",
    offerId: "111111",
    month: "202111",
    total: "2"
}, {
    refundNo: "15951892878",
    busiName: "流量费2",
    busiId: "654321",
    offerName: "销售品2",
    offerId: "222222",
    month: "202110",
    total: "3"
}, {
    refundNo: "15951892878",
    busiName: "流量费2",
    busiId: "6543211",
    offerName: "销售品2",
    offerId: "222222",
    month: "202110",
    total: "4"
}, {
    refundNo: "15951892878",
    busiName: "流量费2",
    busiId: "654321",
    offerName: "销售品2",
    offerId: "2222221",
    month: "202110",
    total: "5"
}, {
    refundNo: "15951892878",
    busiName: "流量费2",
    busiId: "654321",
    offerName: "销售品2",
    offerId: "222222",
    month: "202110",
    total: "6"
}, {
    refundNo: "13881782693",
    busiName: "流量费3",
    busiId: "321321",
    offerName: "销售品3",
    offerId: "333333",
    month: "202110",
    total: "7"
}]
$(function () {

    var dest = filter(arr, "refundNo");
    for (var i in dest) {
        var dest2 = filter2(dest[i].data, "busiId", "offerId");
        dest[i].data = dest2;

    }
    console.log(dest);
    var additionTable = $("#additionTable");
    // for (var i in dest) {
    //     var tr1 = $("<tr></tr>");
    //     tr.append("<td rowspan='" + dest[i].data[0].length + "'>" + dest[i].data[0].refundNo + "</td>");
    //     tr.append("<td rowspan='" + dest[i].data[0].length + "'>" + dest[i].data[0].busiName + "</td>");
    //     tr.append("<td rowspan='" + dest[i].data[0].length + "'>" + dest[i].data[0].busiId + "</td>");
    //     tr.append("<td rowspan='" + dest[i].data[0].length + "'>" + dest[i].data[0].offerName + "</td>");
    //     tr.append("<td rowspan='" + dest[i].data[0].length + "'>" + dest[i].data[0].offerId + "</td>");
    //     tr.append("<td>" + dest[i].data[0].data[0].month + "</td>");
    //     tr.append("<td>" + dest[i].data[0].data[0].total + "</td>");
    //     additionTable.append(tr1);
    //     for (var j in dest[i]["data"]) {
    //         if (j > 0) {
    //             var tr2 = $("<tr></tr>");
    //             tr.append("<td rowspan='" + + "'>" + dest[i].data[j].data[0].busiName + "</td>");
    //             tr.append("<td rowspan='" + + "'>" + dest[i].data[j].data[0].busiId + "</td>");
    //             tr.append("<td rowspan='" + + "'>" + dest[i].data[j].data[0].offerName + "</td>");
    //             tr.append("<td rowspan='" + + "'>" + dest[i].data[j].data[0].offerId + "</td>");
    //             for (var k in dest[i].data[j].data) {
    //                 tr.append("<td rowspan='" + + "'>" + dest[i].data[j].data[k].month + "</td>");
    //                 tr.append("<td rowspan='" + + "'>" + dest[i].data[j].data[k].total + "</td>");
    //             }
    //         }
    //     }
    //     additionTable.append(tr);
    // }

    // for (var i = 0; i < dest.length; i++) {
    //     console.log();
    //     var level2 = dest[i]["data"];
    //     for (var j = 0; j < level2.length; j++) {
    //         var level3 = level2[j]["data"];
    //         for (var k = 0; k < level3.length; k++) {
    //             var tr = $("<tr></tr>");
    //             if (j == 0) {

    //                 tr.append("<td rowspan='" + (level2.length + level3.length) + "'>" + level3[k].refundNo + "</td>");
    //                 tr.append("<td rowspan='" + level3.length + "'>" + level3[k].busiName + "</td>");
    //                 tr.append("<td rowspan='" + level3.length + "'>" + level3[k].busiId + "</td>");
    //                 tr.append("<td rowspan='" + level3.length + "'>" + level3[k].offerName + "</td>");
    //                 tr.append("<td rowspan='" + level3.length + "'>" + level3[k].offerId + "</td>");
    //                 tr.append("<td>" + level3[k].month + "</td>");
    //                 tr.append("<td>" + level3[k].total + "</td>");
    //             } else {
    //                 tr.append("<td>" + level3[k].month + "</td>");
    //                 tr.append("<td>" + level3[k].total + "</td>");
    //             }


    //             additionTable.append(tr);


    //         }
    //     }
    // }

    for (var i = 0; i < dest.length; i++) {
        var level1 = dest[i].data;

        for (var j = 0; j < level1.length; j++) {
            var level2 = level1[j].data;
            for (var k = 0; k < level2.length; k++) {
                var level3 = level2[k];
               //// console.log(i + ">>>>>>>>>" + level3);

                var phone = $("#" + level3.refundNo);
                if (phone.length == 0) {
                    var tr = $("<tr id ='" + level3.refundNo + "'></tr>");
                    tr.append("<td id='" + (level3.busiId + level3.offerId) + "' rowspan='" + (level1.length + level2.length) + "'>" + level3.refundNo + "</td>");
                    tr.append("<td rowspan='" + level2.length + "'>" + level3.busiName + "</td>");
                    tr.append("<td rowspan='" + level2.length + "'>" + level3.busiId + "</td>");
                    tr.append("<td rowspan='" + level2.length + "'>" + level3.offerName + "</td>");
                    tr.append("<td rowspan='" + level2.length + "'>" + level3.offerId + "</td>");
                    tr.append("<td>" + level3.month + "</td>");
                    tr.append("<td>" + level3.total + "</td>");
                    additionTable.append(tr);


                } else {
                    var busiIdAndofferid = $("#" + level3.busiId + level3.offerId);
                    if (busiIdAndofferid.length == 0) {
                        var tr = $("<tr></tr>");
                        tr.append("<td id='" + (level3.busiId + level3.offerId) + "' rowspan='" + level2.length + "'>" + level3.busiName + "</td>");
                        tr.append("<td rowspan='" + level2.length + "'>" + level3.busiId + "</td>");
                        tr.append("<td rowspan='" + level2.length + "'>" + level3.offerName + "</td>");
                        tr.append("<td rowspan='" + level2.length + "'>" + level3.offerId + "</td>");
                        tr.append("<td>" + level3.month + "</td>");
                        tr.append("<td>" + level3.total + "</td>");
                        additionTable.append(tr);
                    } else {

                        var tr = $("<tr></tr>");
                        tr.append("<td>" + level3.month + "</td>");
                        tr.append("<td>" + level3.total + "</td>");
                        additionTable.append(tr);
                    }

                }


            }
        }

    }
})
var filter2 = function (arr, param1, param2) {
    var map = {}, dest = [];
    for (var i = 0; i < arr.length; i++) {
        var ai = arr[i];
        if (!map[ai[param1]] || !map[ai[param2]]) {//如果param不同
            dest.push({
                [param1]: ai[param1],
                [param2]: ai[param2],
                data: [ai]
            });
            map[ai[param1]] = ai;
            map[ai[param2]] = ai;
        } else {//param相等
            for (var j = 0; j < dest.length; j++) {
                var dj = dest[j];
                if (dj[param1] == ai[param1] && dj[param2] == ai[param2]) { //找到相等的param
                    dj.data.push(ai);
                    break;
                }
            }
        }
    }
    return dest;
}
var filter = function (arr, param) {
    var map = {}, dest = [];
    for (var i = 0; i < arr.length; i++) {
        var ai = arr[i];
        if (!map[ai[param]]) {//如果param不同
            dest.push({
                [param]: ai[param],
                data: [ai]
            });
            map[ai[param]] = ai;
        } else {//param相等
            for (var j = 0; j < dest.length; j++) {
                var dj = dest[j];
                if (dj[param] == ai[param]) { //找到相等的param
                    dj.data.push(ai);
                    break;
                }
            }
        }
    }
    return dest;
}
<table id="additionTable" border="1" cellspacing="0" cellpadding="0">
	<thead>
		<tr>
            <th rowspan="2">号码</th>
            <th rowspan="2">争议账目项</th>
			<th rowspan="2">账目项ID</th>
			<th rowspan="2">争议销售品</th>
			<th rowspan="2">销售品ID</th>
			<th rowspan="2">争议账期</th>
			<th colspan="2">争议金额</th>
		</tr>
	</thead>
	<tbody>
		<!-- <tr>
			<td rowspan="3">销售品1</td>
			<td rowspan="2">123456</td>
			<td rowspan="2">2020/11/11</td>
			<td rowspan="2">2022/12/12</td>
			<td rowspan="2">15951892878</td>
			<td>套餐1</td>
			<td>限制</td>
		</tr>
		<tr>
			<td>套餐2</td>
			<td>限制</td>
		</tr>
		<tr>
			<td>654321</td>
			<td>2020/11/11</td>
			<td>2022/12/12</td>
			<td>13880440592</td>
			<td>套餐3</td>
			<td>限制</td>
		</tr>
       <tr>
			<td rowspan="3">销售品2</td>
			<td rowspan="2">123456</td>
			<td rowspan="2">2020/11/11</td>
			<td rowspan="2">2022/12/12</td>
			<td rowspan="2">15951892878</td>
			<td>套餐1</td>
			<td>限制</td>
		</tr>
		<tr>
			<td>套餐2</td>
			<td>限制</td>
		</tr>
		<tr>
			<td>654321</td>
			<td>2020/11/11</td>
			<td>2022/12/12</td>
			<td>13880440592</td>
			<td>套餐3</td>
			<td>限制</td>
		</tr> -->
	</tbody>
</table>

本项目引用的自定义外部资源