javascript - 区分数组中的范围,并扩展它们

标签 javascript arrays string loops range

我需要区分数组中的范围,并扩展它。我正在使用 JavaScript。

例如:

var arr = ["1", "6", "4", "5", "9-11", "13-15"];

所需的输出是

var output =["1", "6", "4", "5", "9", "10", "11", "13", "14", "15"];

我目前有扩展一定范围的脚本。我很难确定数组中的范围:

var range = "1-6";
range = str.split("-");

start = parseInt(range[0]);
end = parseInt(range[1]);

var rangeArray = [];

for(var i = start; i <= end; i++){
    rangeArray.push(i);
}
console.log(rangeArray); 

最佳答案

我更新了您的代码以制作一个返回数组中所有数字的 splitRanges 函数,并遍历初始数组并使用此函数在每次迭代中提取所有范围:

var arr = ["1", "6", "4", "5", "9-11", "13-15"]

function splitRanges(rangeStr) {
  var range = rangeStr.split("-");
  var start = parseInt(range[0]);
  var end = parseInt(range[1]);
  var rangeArray = [];

  for (var i = start; i <= end; i++) {
    rangeArray.push(""+i+"");
  }
  return rangeArray;
}

var output = [];

arr.forEach(function(r){
    if(r.indexOf("-")>-1){
      output = output.concat(splitRanges(r));
    }else
      output.push(r);
});
console.log(output);

解释:

此代码遍历初始数组,并在每次迭代中检查它是否是一个范围,将此值传递给 splitRanges 函数,并将结果concat 否则传递给我们的输出数组只需push output 数组中的值。

关于javascript - 区分数组中的范围,并扩展它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46600825/

相关文章:

javascript - NetSuite:无法从数组访问对象类型内的对象

java - 如何选择要复制的文件?

python - Python 字符串 `\x` 中的前导 `\xaa` 是什么意思

java - 任意类型数组

javascript - CSS + jquery 响应式背景颜色变化

javascript - 只有数字。在React中输入数字

javascript - 那个 js 表达式安全吗 : if( ! x || doSomething( x[prop], y[prop] ) === false )

javascript - 如果值来自 if/then 语句,则从数组中删除元素 - Javascript

Python:将以特定行为边界的 block 复制到新文件

javascript - 自动完成 json_encode 按列返回