验证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>
合乎自然而生生不息。。。