验证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>
验证abc三列数字符合我的小弟要求的更多相关文章
- js验证连续两位数字递增或递减和连续三位数字相同
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- 三列等高 css实现
实现这个三列等高 布局需要最外层的一个div wrap容器 里面有三个div容器 这个最外层div 需要移除隐藏 overflow:hidden; 关键点就是三列div 同时margin-botto ...
- web标准(复习)--3 二列和三列布局
今天学习二列和三列布局,将涉及到以下内容和知识点 二列自适应宽度 二列固定宽度 二列固定宽度居中 xhtml的块级元素(div)和内联元素(span) float属性 三列自适应宽度 三列固定宽度 三 ...
- Web标准:三、二列和三列布局
知识点: 1.二列自适应宽度 2.二列固定宽度 3.二列固定宽度居中 4.xhtml的块级元素(div)和内联元素(span) 5.float属性 6.三列自适应宽度 7.三列固定宽度 8.三列固定宽 ...
- CF 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和(数位DP)
题意: 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和 分析:考虑用状态压缩 , 10给位0~9 , 如果之前出现过了某个数字x ,那就拿当 ...
- CSS3中flexbox如何实现水平垂直居中和三列等高布局
最近这些天都在弥补css以及css3的基础知识,在打开网页的时候,发现了火狐默认首页上有这样一个东西.
- [html]三列居中自动伸缩的结构
html三列居中自动伸缩的结构 <div style="width:100%;height:80px;border:1px solid #DDD;margin-bottom:10px; ...
- CSS三列布局
× 目录 两侧定宽中间自适应 两列定宽一侧自适应 中间定宽两侧自适应一侧定宽两列自适应三列自适应总结 前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中 ...
- CSS两列及三列自适应布局方法整理
布局 自适应 两列 三列 在传统方法的基础上加入了Flex布局并阐述各方法的优缺点,希望对大家有所帮助.先上目录: 两列布局:左侧定宽,右侧自适应 方法一:利用float和负外边距 方法二:利用外边距 ...
随机推荐
- #include<iostream>与#include<iostream.h>的区别
转载于祝长洋的BLOG:http://blog.sina.com.cn/s/blog_514b5f600100ayks.h ...
- hdu 1599 find the mincost route
http://acm.hdu.edu.cn/showproblem.php?pid=1599 floyd找最小环. #include <cstdio> #include <cstri ...
- redo、undo、binlog的区别
在MySQL中,redo.undo.binlog经常见,但很容易混淆这三者. redo undo binlog 作用 保持事务的持久性 帮助事务回滚及MVCC的功能 进行Point-In-Time ...
- 使用httpclient抓取时,netstat 发现很多time_wait连接
http://wiki.apache.org/HttpComponents/FrequentlyAskedConnectionManagementQuestions 1. Connections in ...
- windows 守护进程
use Win32::Process::Info; while (1==1){ use Sys::Hostname; use HTTP::Date qw(time2iso str2time time2 ...
- myeclipse中控制台日志比实际晚8小时解决方法及java日志处理
今天终于忍不住要解决myeclipse控制台中日志显示比实际晚8小时的问题,开始以为myeclipse编辑器时间问题,后来想想不对,myeclipse控制台打印的是tomcat的日志,随后以为是log ...
- C++指针初始化总结
1.字符指针的初始化 在c语言中 "string"保存的就是首个字符所在的地址 所以可以把 字符串常量"string" 赋值给指针 char *p; &qu ...
- hihoCoder 1041 国庆出游 (DFS)
题意: 小Hi和小Ho准备国庆期间去A国旅游.A国的城际交通比较有特色:它共有n座城市(编号1-n):城市之间恰好有n-1条公路相连,形成一个树形公路网.小Hi计划从A国首都(1号城市)出发,自驾遍历 ...
- c++面试知识点
static #include<stdio.h> #include<iostream> #include<assert.h> using namespace std ...
- 带CheckBox的TreeView网上出错问题解决办法
问题描述:TreeView上传到服务器,预览效果发现节点图片不显示.展开合并功能缺失.解决办法: 以下是我个人的解决办法,最终的效果实现了,但是还有一点点小遗憾,就是页面上有基于微软的调用js的报错信 ...