题目描述: 判断数组中是否存在三个连续的奇数,存在返回true,不存在返回false。
如: arr = [1,2,3,5,7] 存在3,5,7 所以返回true
方法1:利用for循环 判断数组元素
// 判断数组中是否存在三个连续的奇数
let arr6 = [1,3,5,7]
function test(arr) {
// 首先判断数组长度,不足三个元素的 直接false
if (arr.length <= 2) {
console.log('数组长度不小于等于2 不执行这一行代码');
return false
}else{
//对数组的每个元素进行判断
for(let i=0; i < arr.length - 2; i++){
if(arr[i] % 2 !=0 && arr[i+1] % 2 !=0 &&arr [i+2] % 2 !=0){
// 如果 连续的三个元素 对2取余都不为0 说明存 在 直接返回true 即可
console.log('存在');
return true
console.log('这一行不执行');
}
console.log('如果存在,以下代码都不执行');
console.log('不存在')
return false
console.log('不执行这一行代码')
}
}
}
test(arr6);
方法2:利用map join indexof 方法
map方法会对每一个元素进行遍历
join方法 将数组 转化为字符串
indexof 判断 是否存在元素 存在返回0 不存在 返回-1
let arr7 = [1,3,5,7];
// 逻辑: 1、首先运用map方法 判断每个元素是否为奇数 采用三目运算 是奇数 返回1 不是奇数 返回0
// 2、 利用join方法 将map返回的数组 转化为全是0和1组成的字符串
// 3、利用indexof 判断 字符串中是否存在'111' 存在返回
let res1 = arr7.map(item => {
return item%2 == 0 ? '0' : '1'
})
console.log(res1); // (4) ["1", "1", "1", "1"]
// 利用join方法 将数组转化为字符串
let res2 = res1.join('')
console.log(res2); // 1111 (字符串)
// 利用indexof 判断 字符串中是否含有'111' 存在就说明有连续三个奇数
let res3 = res2.indexOf('111')
console.log(res3); // 0 说明存在
// 综上
function test(arr) {
return arr.map(item => {return item%2 == 0 ? '0' : '1'}).join('').indexOf('111') != -1
}
test(arr7);