JS 判断字符串、数组、对象数组是否包含某个值以及字符串是否匹配某个模式

目录

  • 一、字符串
    • indexOf()方法
    • includes()方法
    • search()方法
    • match() 方法
  • 二、数组
    • indexOf() 方法
    • includes() 方法
    • find() 方法
    • findIndex() 方法
    • some() 方法
  • 三、对象数组
    • find() 方法
    • findIndex() 方法
    • some() 方法
  • 四、RegExp对象
    • RegExp对象的声明
    • test() 方法
    • exec() 方法

一、字符串

indexOf()方法

可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。

var str = "123"
console.log(str.indexOf("2") != -1); // true
 var str = 'Hello world!';
 console.log( str.indexOf('e') ); // 存在字符串中,返回位置 1
 console.log( str.indexOf('d') ); // 存在字符串中,返回位置 10
 console.log( str.indexOf('x') ); // 不存在字符串中,返回 -1

includes()方法

用于判断一个字符串是否包含另一个字符串,返回一个布尔值。如果包含则返回true,如果不包含则返回false。

var str="Hello world!";
if(str.includes("world")){
  console.log("字符串中包含'world'");
}
else{
  console.log("字符串中不包含'world'");
}

search()方法

也用于检索字符串中是否包含指定的字符或者子串,如果包含则返回字符或者子串的位置,如果不包含则返回-1。与indexOf()方法不同的是,search()方法接受一个正则表达式作为参数。

var str = "123"
console.log(str.search("2") != -1); // true

match() 方法

可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

var str="Hello world!";
if(str.match("world")){
  console.log("字符串中包含'world'");
}
else{
  console.log("字符串中不包含‘world’");
}

var str = "123"
 
var reg = RegExp(/3/);
 
if(str.match(reg)){
 
 //包含;
 
}

二、数组

indexOf() 方法

1.如果你的代码需要兼容 ES5 或更早的版本,那么可以使用 indexOf() 方法来判断数组是否包含某个元素。它的语法如下:array.indexOf(searchElement[, fromIndex]);其中searchElement 表示要查找的元素,fromIndex 表示搜索的起始位置,默认值为 0。indexOf() 方法返回一个数字,表示数组中第一次出现指定元素的位置。如果数组中不包含该元素,则返回 -1。

const fruits = ['apple', 'banana', 'orange'];
console.log(fruits.indexOf('apple') !== -1); // true
console.log(fruits.indexOf('banana') !== -1); // true
console.log(fruits.indexOf('pear') !== -1); // false
  var arr = ['cat', 'dog', 'bat']; 
  console.log( arr.indexOf('cat') ) // 存在 返回位置 0
  console.log( arr.indexOf('dog') ) // 存在 返回位置 1
  console.log( arr.indexOf('tiger') ) // 不存在 返回 -1

includes() 方法

在 ES6 中,为数组提供了一个 includes() 方法,用于判断数组是否包含某个元素。它的语法如下:array.includes(searchElement[, fromIndex])其中,searchElement 表示要查找的元素,fromIndex 表示搜索的起始位置,默认值为 0。includes() 方法返回一个布尔值,表示数组中是否包含指定的元素。

  var arr = ['cat', 'dog', 'bat'];
 console.log( arr.includes('cat' ) ) // 存在 返回 true
 console.log( arr.includes('dog' ) ) // 存在 返回 true
 console.log( arr.includes('tiger') ) // 不存在 返回 false

find() 方法

  1. ES6 中还提供了一个 find() 方法,它可以用于获取数组中符合条件的第一个元素。如果数组中不存在符合条件的元素,则返回 undefined。我们可以利用这一点来判断数组是否包含某个元素。
  2. 这里的 find() 方法使用了一个箭头函数,它接受一个参数 item,表示数组中的每一个元素。箭头函数的返回值为 item 是否等于要查找的元素,如果是则返回 true,否则返回 false。最终,find() 方法返回的是查找结果是否为 undefined,即是否存在符合条件的元素。
  3. 使用 find() 方法判断数组是否包含某个元素的示例代码:
const fruits = ['apple', 'banana', 'orange'];
 
console.log(fruits.find(item => item === 'apple') !== undefined); // true
 
console.log(fruits.find(item => item === 'banana') !== undefined); // true
 
console.log(fruits.find(item => item === 'pear') !== undefined); // false

findIndex() 方法

返回符合传入测试(函数)条件的数组元素索引,否则返回 -1.

var arr = ['cat', 'dog', 'bat'];
console.log( arr.findIndex(v => v == 'cat' ) ) // 存在 返回 0
console.log( arr.findIndex(v => v == 'dog' ) ) // 存在 返回 1
console.log( arr.findIndex(v => v == 'tiger') ) // 不存在 返回 -1

some() 方法

与 find() 方法类似,ES6 中还提供了一个 some() 方法,它可以用于判断数组中是否存在符合条件的元素。如果数组中存在符合条件的元素,则返回 true,否则返回 false。以下是使用 some() 方法判断数组是否包含某个元素的示例代码:

const fruits = ['apple', 'banana', 'orange'];
 
console.log(fruits.some(item => item === 'apple')); // true
 
console.log(fruits.some(item => item === 'banana')); // true
 
console.log(fruits.some(item => item === 'pear')); // false

三、对象数组

find() 方法

var arr = [{name:'cat'}, {name:'dog'}, {name:'bat'}];
 console.log( arr.find(v => v.name == 'dog' ) ) // 存在 返回 {name: "dog"}
 console.log( arr.find(v => v.name == 'tiger') ) // 不存在 返回 undefined

findIndex() 方法

var arr = [{name:'cat'}, {name:'dog'}, {name:'bat'}];
 console.log( arr.findIndex(v => v.name == 'cat' ) ) // 存在 返回 0
 console.log( arr.findIndex(v => v.name == 'dog' ) ) // 存在 返回 1
 console.log( arr.findIndex(v => v.name == 'tiger') ) // 不存在 返回 -1

some() 方法

var arr = [{name:'cat'}, {name:'dog'}, {name:'bat'}];
 console.log( arr.some(v => v.name == 'cat' ) ) // 存在 返回 true
 console.log( arr.some(v => v.name == 'dog' ) ) // 存在 返回 true
 console.log( arr.some(v => v.name == 'tiger') ) // 不存在 返回 false
// 循环判断arr与arr2是否有相同元素,相同的添加isdelete:false字段,不同添加isdelete:true
 this.arr.map((item) => {
     let bool = this.arr2.findIndex((it) => {
     return item.name == it.name
   })
   if (bool !== -1) {
     item.isdelete = false
   } else {
     item.isdelete = true
   }
})

四、RegExp对象

RegExp对象的声明

  1. 语法:声明一个RegExp有两种方式:
    1)使用对象创建:var re=new RegExp(pattern,modifiers);
    // var 变量名 = new RegExp(“正则表达式”,“匹配模式”);

    ​​​​​​// 这个正则表达式可以来检查一个字符串中是否含有a
    var reg = new RegExp("ab", "i");
    var str = "Abc";
    var result = reg.test(str);
    console.log(result); //true
    

    2)使用字面量创建:var re =/pattern/modifiers;
    // var 变量名 = /正则表达式/匹配模式;

    // 这个正则表达式可以来检查一个字符串中是否含有a
    var reg = /a/i;
    var str = "Abc";
    var result = reg.test(str);
    console.log(result); // true
    
  2. 匹配模式:
    i:忽略大小写
    g:全局匹配模式
    ig:忽略大小写且全局匹配模式
    m:执行多行匹配
    注意:可以为一个正则表达式设置多个匹配模式,且顺序无所谓

test() 方法

  1. test() 方法用于检测一个字符串是否匹配某个模式。如果字符串中有匹配的值返回 true ,否则返回 false。
  2. 语法:RegExpObject.test(string)
var str = "123"
var reg = RegExp(/3/);
console.log(reg.test(str) != -1); // true
// 这个正则表达式可以来检查一个字符串中是否含有a
var reg = /a|b|c/;
var str = "Abc";
var result = reg.test(str);
console.log(result); 
// 这个正则表达式可以来检查一个字符串中是否含有字母
var reg = /[A-z]/;
var str = "Abc";
var result = reg.test(str);
console.log(result);
// Javascript 判断是移动端浏览器还是 PC 端浏览器:
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
    document.write("移动")
} else {
    document.write("PC")
}
// 验证用户手机号提交是否符合要求
var phone =18367898765;
var reg=/^[1][3,4,5,7,8][0-9]{9}$/;
if(!(reg.test(phone))){
	alert('请输入正确的手机号码!')
}else{
	alert('输入的手机号码正确!')
}

exec() 方法

用于检索字符串中的正则表达式的匹配。返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

var str = "123"
 
var reg = RegExp(/3/);
 
if(reg.exec(str)){
 
 //包含;
 
}
var str=" world! Hello";
//查找"Hello"
var patt=/Hello/g;
var result=patt.exec(str);
console.log("返回值: " +  result);  //Hello
//查找 "RUNOOB"
patt=/RUNOOB/g;
result=patt.exec(str);
console.log("
返回值: " + result);//null

你可能感兴趣的:(前端基础,javascript,前端)