验证abc三列数字符合我的小弟要求

需求好像是:

1.第一列数据有重复的找出来,并且找出它的重复位置

2.第三列根据第一列得出的位置,取出相应位置的数据进行相加

3.相加的结果 是否等同于第二列的对应位置数据

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf8" />
<title>验证abc三列数字符合我的小弟要求(第二版本)</title>
<script type="text/javascript">


var a_list = [1,1,2,2,3];
var b_list = [10,10,5,5,1];
var c_list = [5,5,2,3,1];
function abc_equal(a_list, b_list, c_list){
    var bb_equal_flag = true;
    function a_list_fnc(a_list) {
        var repeat_list = [];
        for(var i=0,i_l = a_list.length; i< i_l; i++){
            var a_num = a_list[i];
            var break_flag = false;
            // 之前有没找过同样的数据
            for(var re_x=0; re_x<repeat_list.length; re_x++){
                if(a_num == repeat_list[re_x].num){
                    break_flag = true;;
                }

            }


            var repeat_obj = {};
            repeat_obj.num = "";
            repeat_obj.pos = [];

            // 找出重复的位置
            for(var j=0; j< i_l; j++ ){


                // 如果有同样的数据
                if(a_num == a_list[j]){    

                    if(repeat_obj.num == a_num){
                        repeat_obj.pos.push(j);
                    }
                    else{
                        repeat_obj.num = a_num;
                        repeat_obj.pos.push(j);
                    }                

                }
            }
            if(!break_flag){
                repeat_list.push(repeat_obj);
            }
            

        }

        return repeat_list;
    }

    function b_list_fnc(repeat_list,b_list){
        var b_list_compute = [];

        for(var i=0,l=repeat_list.length; i < l; i++){
            var b_obj = {};

            b_obj.b_key = repeat_list[i].num;
            b_obj.b_value = b_list[repeat_list[i].pos[0]];

            // 判断b列的指定行数字是否相等
            for(var j=0; j< repeat_list[i].pos.length; j++){
                if(b_obj.b_value != b_list[repeat_list[i].pos[j]]){
                    bb_equal_flag = false;
                    console.log("不通过的原因:b列的第"+repeat_list[i].pos[j]+"行数字有问题!");
                }
            }
            

            b_list_compute.push(b_obj);
            
        }
        return b_list_compute;
    }

    function c_list_fnc(repeat_list,c_list){
        var c_list_compute = [];

        for(var i=0,l=repeat_list.length; i < l; i++){
            var c_obj = {};

            c_obj.c_key = repeat_list[i].num;
            c_obj.c_value = 0;
            for(var j=0; j< repeat_list[i].pos.length; j++){
                c_obj.c_value = c_obj.c_value + c_list[repeat_list[i].pos[j]];
            }

            c_list_compute.push(c_obj);
        }

        return c_list_compute;

    }

    function b_c_equal(b_list_end, c_list_end){
        var bc_equal_flag = true;
        for(var i=0; i< b_list_end.length; i++){
            var b_key = b_list_end[i]["b_key"];
            var b_value = b_list_end[i]["b_value"];

            for(var j=0; j< c_list_end.length; j++){
                 if(b_key == c_list_end[i]["c_key"]){
                     if(b_value == c_list_end[i]["c_value"]){
                         break;
                     }
                     else{
                         bc_equal_flag = false;
                         console.log("不通过的原因:c列的"+b_key + "对应数字有问题!");
                         break;
                     }
                 }
            }
        }
        return bc_equal_flag;
    }

    function total_result(b_list_end, c_list_end){
        if(!bb_equal_flag){
            console.log("验证不通过,原因是b列的数字不对应");
            return;
        }
        if(!b_c_equal(b_list_end, c_list_end)){
            console.log("验证不通过,原因是b列和c列的值不对应");
            return;
        }

        console.log("恭喜你,验证通过!");
    }
    var a_list_end = a_list_fnc(a_list);
    var b_list_end = b_list_fnc(a_list_end,b_list);
    var c_list_end = c_list_fnc(a_list_end,c_list);

    console.log(a_list_end)
    console.log(b_list_end)
    console.log(c_list_end)
    console.log(b_c_equal(b_list_end, c_list_end))

    total_result(b_list_end, c_list_end);

}
abc_equal(a_list, b_list, c_list );

</script>
</head>
<body>

</body>
</html>

 

posted @ 2013-12-28 13:48  草珊瑚  阅读(287)  评论(0编辑  收藏  举报