需求好像是:

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>

验证abc三列数字符合我的小弟要求的更多相关文章

  1. js验证连续两位数字递增或递减和连续三位数字相同

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  2. 三列等高 css实现

    实现这个三列等高 布局需要最外层的一个div wrap容器 里面有三个div容器 这个最外层div 需要移除隐藏 overflow:hidden;  关键点就是三列div 同时margin-botto ...

  3. web标准(复习)--3 二列和三列布局

    今天学习二列和三列布局,将涉及到以下内容和知识点 二列自适应宽度 二列固定宽度 二列固定宽度居中 xhtml的块级元素(div)和内联元素(span) float属性 三列自适应宽度 三列固定宽度 三 ...

  4. Web标准:三、二列和三列布局

    知识点: 1.二列自适应宽度 2.二列固定宽度 3.二列固定宽度居中 4.xhtml的块级元素(div)和内联元素(span) 5.float属性 6.三列自适应宽度 7.三列固定宽度 8.三列固定宽 ...

  5. CF 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和(数位DP)

    题意: 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和 分析:考虑用状态压缩 , 10给位0~9 , 如果之前出现过了某个数字x ,那就拿当 ...

  6. CSS3中flexbox如何实现水平垂直居中和三列等高布局

    最近这些天都在弥补css以及css3的基础知识,在打开网页的时候,发现了火狐默认首页上有这样一个东西.

  7. [html]三列居中自动伸缩的结构

    html三列居中自动伸缩的结构 <div style="width:100%;height:80px;border:1px solid #DDD;margin-bottom:10px; ...

  8. CSS三列布局

    × 目录 两侧定宽中间自适应 两列定宽一侧自适应 中间定宽两侧自适应一侧定宽两列自适应三列自适应总结 前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中 ...

  9. CSS两列及三列自适应布局方法整理

    布局 自适应 两列 三列 在传统方法的基础上加入了Flex布局并阐述各方法的优缺点,希望对大家有所帮助.先上目录: 两列布局:左侧定宽,右侧自适应 方法一:利用float和负外边距 方法二:利用外边距 ...

随机推荐

  1. OpenSSl 加密解密 示例(终于有编程实践了)

    OPenSSl的加密主要有三个重要的函数.看懂下面的代码就基本上知道该如何使用openssL来加密了. 不过注意,要先将libssl.so.1.0和libcrypto.so.1.0文件复制到执行的文件 ...

  2. MySQL加锁分析

    参考:MySQL 加锁处理分析.该文已经讲的很详尽了,也易懂,下面仅仅是个人做的总结. 一. 背景 1.1 隔离级别 1.2 加锁过程 逐条处理,逐条加锁. 1.3 两阶段锁2PL 1.4 gap锁 ...

  3. Prime Palindrome Golf

    Prime Palindrome Golf Do you know how to play Prime Palindrome Golf? You are given a number and your ...

  4. Base64 加密之中文乱码

    ase64编码将二进制数据按照每三个字节转换成四个字节可读字符,编码后的字符长度大约为136.1%.字符范围为 A-Z  a-z  0-9  \  +.但编码后的字符串不太适合使用URL传输,中文加密 ...

  5. SICP 练习 1.3

    (define (sum a b) (+ a b)) (define (sum-two a b c) ( cond ((and (> (sum a b) (sum a c)) (> (su ...

  6. MySQL数据备份之mysqldump

      mysqldump常用于MySQL数据库逻辑备份 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dum ...

  7. Majority Element II 解答

    Question Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Th ...

  8. 在O(1)时间内删除单链表结点

    // 在O(1)时间内删除单链表结点 /* 思考: 很显然链表是一个节点地址不连续的存储结构 删除节点一般很容易会想到是修改p节点的前一个节点的next为p->next 然而除非是双向链表,否则 ...

  9. html 表单初步学习

    <html> <head> <title> 静态页面</title> </head> <body> 这是一个静态页面<br ...

  10. 对每个用户说hello

    #!/bin/bash #对每个用户说hello #用户数 Lines=`wc -l /etc/passwd | cut -d' ' -f1` $Lines`; do echo "Hello ...