2020-11-30

题目描述: 判断数组中是否存在三个连续的奇数,存在返回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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值