JS 判断字符串、数组、对象数组是否包含某个值
一、字符串
1 var str = 'Hello world!'; 2 console.log( str.indexOf('e') ); // 存在字符串中,返回位置 1 3 console.log( str.indexOf('d') ); // 存在字符串中,返回位置 10 4 console.log( str.indexOf('x') ); // 不存在字符串中,返回 -1
二、数组
Array.indexOf() 搜索数组中的元素,并返回它所在的位置,不存在则返回 -1.
Array.includes() 判断一个数组是否包含一个指定的值,返回 true,否则返回false.
Array.find() 返回符合传入测试(函数)条件的数组元素,否则返回 undefined.
Array.findIndex() 返回符合传入测试(函数)条件的数组元素索引,否则返回 -1.
Array.some() 检测数组元素中是否有元素符合指定条件(函数)。返回 true,否则返回 false.
1 var arr = ['cat', 'dog', 'bat']; 2 3 // indexOf() 方法 4 console.log( arr.indexOf('cat') ) // 存在 返回位置 0 5 console.log( arr.indexOf('dog') ) // 存在 返回位置 1 6 console.log( arr.indexOf('tiger') ) // 不存在 返回 -1 7 8 // includes() 方法 9 console.log( arr.includes('cat' ) ) // 存在 返回 true 10 console.log( arr.includes('dog' ) ) // 存在 返回 true 11 console.log( arr.includes('tiger') ) // 不存在 返回 false 12 13 // find() 方法 14 console.log( arr.find(v => v == 'dog' ) ) // 存在 返回值 dog 15 console.log( arr.find(v => v == 'tiger') ) // 不存在 返回 undefined 16 17 // findIndex() 方法 18 console.log( arr.findIndex(v => v == 'cat' ) ) // 存在 返回 0 19 console.log( arr.findIndex(v => v == 'dog' ) ) // 存在 返回 1 20 console.log( arr.findIndex(v => v == 'tiger') ) // 不存在 返回 -1 21 22 // some() 方法 23 console.log( arr.some(v => v == 'cat' ) ) // 存在 返回 true 24 console.log( arr.some(v => v == 'dog' ) ) // 存在 返回 true 25 console.log( arr.some(v => v == 'tiger') ) // 不存在 返回 false
三、对象数组
1 var arr = [{name:'cat'}, {name:'dog'}, {name:'bat'}]; 2 var arr2 = [{name:'cat'}, {name:'dog'}] 3 4 console.log( arr.find(v => v.name == 'dog' ) ) // 存在 返回 {name: "dog"} 5 console.log( arr.find(v => v.name == 'tiger') ) // 不存在 返回 undefined 6 7 console.log( arr.findIndex(v => v.name == 'cat' ) ) // 存在 返回 0 8 console.log( arr.findIndex(v => v.name == 'dog' ) ) // 存在 返回 1 9 console.log( arr.findIndex(v => v.name == 'tiger') ) // 不存在 返回 -1 10 11 console.log( arr.some(v => v.name == 'cat' ) ) // 存在 返回 true 12 console.log( arr.some(v => v.name == 'dog' ) ) // 存在 返回 true 13 console.log( arr.some(v => v.name == 'tiger') ) // 不存在 返回 false 14 15 // 循环判断arr与arr2是否有相同元素,相同的添加isdelete:false字段,不同添加isdelete:true 16 this.arr.map((item) => { 17 let bool = this.arr2.findIndex((it) => { 18 return item.name == it.name 19 }) 20 if (bool !== -1) { 21 item.isdelete = false 22 } else { 23 item.isdelete = true 24 } 25 })