【问题标题】:Check if the array has three consecutive numbers in sequence [closed]检查数组是否按顺序包含三个连续数字[关闭]
【发布时间】:2018-09-06 11:06:33
【问题描述】:

我有一个像下面这样的数组

[1,2,'b',4 ,'a','b',5,'o',7,1,3,'p',9,'p']

我想检查上面的数组是否有三个连续的数字(即)[1,2,3]

从上面的数组中我想要输出如下给定的例子

[7,1,3] - > 因为这个序列是在一个序列中发生的,没有被字母阻塞。

【问题讨论】:

  • 好的,所以你需要遍历数组,向前看接下来的两个项目(如果有的话),测试所有三个项目的类型,如果它们'重新所有数字。您需要哪些方面的帮助?
  • 尝试询问有关问题的问题,而不是这里的全部问题。
  • @Rup,是的,完全正确,我尝试了很少的函数,它适用于数组中的数字,上面的例子有数字与字符串的组合,所以我想区分它们并只找到三个单数连续出现
  • 数据中是否只有一个块,或者可能有多个连续数字块?
  • 所以你的问题是区分数字和字符串?您可以使用typeof()。这足以让您现在自己解决这个问题吗?

标签: javascript arrays regex


【解决方案1】:

您可以获取一个临时数组并用找到的数字填充它。对于任何未找到的数字,清空数组并检查长度。如果它具有所需的长度,则将数组推送到结果集。

var array = [1, 2, 'b', 4, 'a', 'b', 5, 'o', 7, 1, 3, 'p', 9, 'p'],
    three = array.reduce((temp => (r, v) => {
        if (typeof v !== 'number') {
            temp = [];
            return r;
        }
        temp.push(v);
        if (temp.length === 3) {
            r.push(temp);
        }
        return r;
    })([]), []);

console.log(three);

【讨论】:

  • 帮助了妮娜
【解决方案2】:

这是一种方法。只需遍历数组和count 数字出现的次数。一旦计数变为 3,您就有了幻数,否则将全部重置。正如@Rup 所建议的那样。

var arr = [1,2,'b',4 ,'a','b',5,'o',7,1,3,'p',9,'p'];
var result = [];
var count = 0;
arr.forEach(function(element) {
   if(typeof (element) == "number" ){
    count +=1;
    result.push(element)
  }else {
    if(count == 3){
     console.log(result);
     return ;
    }else if(count < 3){
     count = 0;
     result= [];
    }
  }
 
});

【讨论】:

  • 完美运行@manikant
  • @AshwinS 很高兴听到!
猜你喜欢
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2021-01-03
  • 2012-04-21
相关资源
最近更新 更多