检查数组中的随机数是否按升序包含其中的5个

时间:2016-10-05 21:28:31

标签: javascript arrays

您好我想检查数组中的5个随机数是否在升序。 例如:

var array = [2, 5, 5, 4, 7, 3, 6];

到此:

array = [2,3,4,5,6];

当然,如果可能有更高的序列:

array = [3,4,5,6,7];

jQuery中有这种排序的快捷方式吗? 提前谢谢。

3 个答案:

答案 0 :(得分:0)

我认为,这将有所帮助:

  • 获得独特会员
  • 对它们进行排序
  • 切片最后5

(或反向,切片前5,反转)就像我一样,因为你的数组可能小于5。

如果结果数组的长度为5,那么你得到肯定答案。

console.log($.unique([2,5,5,4,7,3,6]).sort().reverse().slice(0,5).reverse())

答案 1 :(得分:0)

var array = [2, 5, 5, 4, 7, 3, 6];
//first convert into an object literal for fast lookups.
var ao = {};
array.forEach(function (e) { ao[e] = true; });

//now loop all in array, and then loop again for 5
array.forEach(function (num) {
  var count = 0, l;
  for (l = 0; l < 5; l ++) {
    if (ao[num + l]) count ++;
  }
  if (count === 5) {
    //found, push into array just to show nice in console
    var nums = [];
    for (l = 0; l < 5; l ++) {
      nums.push(num + l);
    }
    console.log(nums.join(','));
  }
});

答案 2 :(得分:0)

您可以执行以下操作;

&#13;
&#13;
function checkStraight(a){
  var s = [...new Set(a)].sort((a,b) => a-b);
  return s.length >= 5 && s.reduce((p,c,i,a) => c - a[i-1] === 1 ? ++p
                                                                 : p < 5 ? 1
                                                                         : p , 1) > 4;
}
var array = [2, 5, 5, 4, 7, 3, 6, 9],
   result = checkStraight(array);
console.log(result);
&#13;
&#13;
&#13;