JS List的contains方法与Array的contains方法的使用
### JS List的contains方法与Array的contains方法的使用 在JavaScript中,`Array`是用于存储多个值的数据结构。然而,原生JavaScript并没有提供一个直接的`contains`方法来检查数组是否包含某个元素。通常情况下,开发人员会自定义一个`contains`方法或者使用现代JavaScript中的`includes`方法来实现这一功能。 #### List的contains方法 根据提供的代码片段,“List的contains方法”实际上是指自定义的`Array`实例方法`contains`。尽管这里的“List”并不是JavaScript标准库的一部分,但我们可以将其理解为对数组的一种泛称。 ##### 自定义Array的contains方法示例: ```javascript Array.prototype.contains = function(item) { return RegExp("\\b" + item + "\\b").test(this); // 或者可以使用更简洁的方式: return this.includes(item); }; ``` 在这段代码中,`Array.prototype.contains`被定义为一个正则表达式测试的方法。这里通过构造一个正则表达式,匹配数组中的字符串元素是否完全包含指定的`item`。这种方法虽然可以工作,但使用正则表达式进行元素匹配并不是最直观或高效的实现方式。实际上,对于现代浏览器来说,使用`Array.prototype.includes`方法更为简便: ```javascript Array.prototype.includes(item); ``` ##### 使用示例 假设我们有一个数组`lsDate`: ```javascript var lsDate = new Array(); lsDate.push('2012-10-22'); console.log(lsDate.contains('2012-10-22')); // 输出:true ``` #### Array的contains方法 在现代JavaScript中,`Array`对象已经内置了一个`includes`方法,用于检查数组中是否存在某个元素。这是一个更加直观且高效的方法,其用法如下: ```javascript var arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // 输出:true ``` 这个方法接受一个参数,即要查找的元素。如果数组中存在该元素,则返回`true`;否则返回`false`。 #### 示例代码分析 提供的部分代码示例中,`ValidateEvenTime`函数使用了自定义的`contains`方法来验证文本框中的值是否重复,并且还检查了一些特定的格式(例如以“@”结尾的情况)。 ```javascript function ValidateEvenTime() { var boolDate = true; var lsDate = new Array(); var lsDateTemp = new Array(); $("textarea[id^=input_uzaipdate_],textarea[id^=input_insert_uzaipdate_]").each(function() { if ($.trim($(this).val()) != "") { var tempPdate = $.trim($(this).val()); var tempPdateArr = tempPdate.substring(0, tempPdate.length - 1).split(','); for (var i = 0; i < tempPdateArr.length; i++) { if (!lsDateTemp.contains(tempPdateArr[i])) { lsDateTemp.push(tempPdateArr[i]); if (tempPdateArr[i].lastIndexOf("@") >= 0) { lsDate.push(tempPdateArr[i].substring(0, tempPdateArr.indexOf("@") - 1)); } else { alert("Ѿ" + tempPdateArr[i] + "ȷ"); boolDate = false; return false; } } } } }); // 检查lsDate中的元素 $("textarea[id^=input_uzaipdate_],textarea[id^=input_insert_uzaipdate_]").each(function() { if ($.trim($(this).val()) != "") { var tempPdate = $.trim($(this).val()); var tempPdateArr = tempPdate.substring(0, tempPdate.length - 1).split(','); for (var i = 0; i < tempPdateArr.length; i++) { if (lsDate.contains(tempPdateArr[i]) && tempPdateArr[i].lastIndexOf("@") < 0) { alert(lsDate[i] + "/@" + "Ѿ" + tempPdate + "ȷ"); boolDate = false; return false; } } } }); return boolDate; } ``` 这段代码首先遍历页面上的某些文本框,然后将这些文本框中的值拆分成数组,并检查这些值是否已经在`lsDateTemp`或`lsDate`数组中出现过。如果发现重复的值,则会弹出警告并返回`false`。 无论是自定义的`contains`方法还是现代JavaScript中的`includes`方法,都可以用来有效地检测数组中是否存在某个元素。然而,在实际开发中推荐使用`includes`方法,因为它更加简洁、易读且性能更优。
return RegExp("\\b" + item + "\\b").test(this); //return RegExp("(^|,)" + item.toString() + "($|,)").test(this);
};//为数组指定contains方法
var lsDate=new Array();
lsDate.push //追加值
lsDate.contains //是否包含
//处理无法添加重复日期数据 当前方法为ValidateDateTime的升级版本 李云 2012-10-22
function ValidateEvenTime() {
var boolDate = true;
Array.prototype.contains = function(item) {
return RegExp("\\b" + item + "\\b").test(this); //return RegExp("(^|,)" + item.toString() + "($|,)").test(this);
};//为数组指定contains方法
var lsDate=new Array() ,lsDateTemp=new Array();
$("textarea[id^=input_uzaipdate_],textarea[id^=input_insert_uzaipdate_]").each(function() {
if ($.trim($(this).val()) != "") {
var tempPdate = $.trim($(this).val());
var tempPdateArr = tempPdate.substring(0, tempPdate.length - 1).split(',');
for (var i = 0; i < tempPdateArr.length; i++) {
if (!lsDateTemp.contains(tempPdateArr[i])) {
lsDateTemp.push(tempPdateArr[i]);
if (tempPdateArr[i].lastIndexOf("@") >= 0) {
lsDate.push(tempPdateArr[i].substring(0, tempPdateArr.indexOf("@") - 1));
}
} else {
alert("已经包含" + tempPdateArr[i] + "请确认"); boolDate = false; return false;
- 粉丝: 3
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ATmega328-Bootloader-Maker(使用ATmega328p芯片制作Arduino Uno R3开发板)
- 一组用 Javascript 解决的技术软件开发面试问题,非常合理.zip
- (源码)基于Spring Boot和WebSocket的贪吃蛇对战系统.zip
- (源码)基于C++的生产线数据传输成功率监控系统.zip
- (源码)基于Spring Boot和Dubbo的文件管理系统.zip
- (源码)基于C++的Local Generals游戏系统.zip
- (源码)基于MQTT协议的智能插座系统.zip
- Insurence_20180221.sav
- 一个简单的 JavaScript 俄罗斯方块游戏.zip
- Python课程设计:基于OpenCV的人脸识别与检测源码
- 1
- 2
前往页