上周五遇到的问题,一个表单页面需要填写一个表格,要求填写的每行的第一个单元格和第三个单元格不能同时相同,比如第一行的第一个单元格是"张三",第三个单元格是"12",那么后面的行不能再出现同样的第一格叫"张三",第三格是"12"的,出现了就弹窗给出相应的提示。

看了源代码,在submit之前触发校验方法,已经将表格转换成二维数组。

接下来加一段校验代码,大致如下:

var tarr = [[1,2,4],[3,4,6],[1,4,4]];  
var checkValue = function(tarr){  
	var map = new Map();  
    for(var i = 0;i < tarr.length;++i){  
        if(typeof map.get(tarr[i][0]+""+tarr[i][2]) != 'undefined'){  
            console.log("Repeated elements found!");  
			return;  
        }  
        map.set(tarr[i][0]+""+tarr[i][2],i);  
    }  
}
checkValue(tarr);


思路就是用map存每行的第一和第三个单元格作为key,value任意,只要不是undefined。每次遍历二维数组时会先去尝试获取第一格和第三格拼接的字符串,获取到(不是undefined),就给出提示,程序结束

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐