如何从数组中提取数字序列?

罗伊·巴恩

我有以下数组:

var selectedRange = [
  null,
  null,
  null,
  null,
  null,
  null,
  null,
  null,
  9, //sequences
  10,//sequences
  null,
  12,
  13,
  14,
  null,
  null,
  null,
  null,
  null,
  20,
  null,
  null,
  null,
  null,
  25,
  null,
  null,
  null,
  29,
  30,
  31,
  32,
  null,
  null,
  null,
  null,
  37,
  38,
  null,
  40,
  41,
  42,
  null,
  44,
  null,
  null,
  47,
  null,
  49,
  50,
  null,
  null,
  null,
  null,
  null,
  null
]

我需要提取数字和仅数字的序列-所以结果将是这样的:

["9,10", "12,13,14", "20", "25", "29,30,31,32", "44", "47", "49,50"]

问题是我无法按原样提取序列,我想我需要一个递归函数来重复检查最后一个数字和当前是否在后面的部分-就像这里...( !! prm &&(prm-(index-1)== 1)

let tempArr = [];
$.each(selectedRange, function (index, prm) {
    if (!!prm && (prm - (index - 1) == 1) {
        tempArr.push(prm); // need to loop this section with recursion 
    }
});
用户名

一种选择是加入逗号分隔的字符串,然后将空元素分开。添加最终过滤器以删除前导或尾随的空元素。这可能不是最有效的。

var selectedRange = [null, null, null, null, null, null, null, null, 9, 10, null, 12, 13, 14, null, null, null, null, null, 20, null, null, null, null, 25, null, null, null, 29, 30, 31, 32, null, null, null, null, 37, 38, null, 40, 41, 42, null, 44, null, null, 47, null, 49, 50, null, null, null, null, null, null ]

console.log(
  selectedRange.join(',').split(/,,+|^,|,$/).filter(Boolean)
)  

(已编辑,以包含来自@KooiInc和@Ifaruki的评论建议。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章