如何从数组中获取数字之前/之后的值

How to get values before/after a number from an array?

本文关键字:之后 数字 数组 获取      更新时间:2023-09-26

我的范围是1000 - 1200

我想要排除数字1002,1030和1040,并像这样获得它们之前和之后的范围:

1000 - 1001
1003 - 1029
1031 - 1039
1041 - 1200

我现在可以在这里输入数字并得到数组。

对于第二部分,我使用jQuery插件,但我认为我需要做一些其他的事情,以便能够传递数组作为参数。

我也不知道如何获得exclusion

之前和之后的范围
function range(first, second) {
    list = []
    this.first = first;
    this.second = second;
    for (var i = first; i <= second; i++) {
        list.push(i)
    }
    return list;
}
a = new range(1, 5)
console.log(a + " this is the original list")
exclusion = 3 //should be a array
listExcluded = jQuery.grep(list, function (value) {
    return value != exclusion;
});
console.log(listExcluded + " this is value without excluded number")

下面是一个简单的示例…可以由js专家来优化。

function range(first, second) {
    this.list = []
    this.first = first;
    this.second = second;
    for (var i = first; i <= second; i++) {
        this.list.push(i)
    }
    return this.list;
}
var a = new range(1, 10)
console.log(a + " this is the original list")
var ec = [3,6];  // should be a array
var b = [];      // new array holding the sliced arrays
var start = 0;
for (var i = 0; i <= ec.length; i++) {
  
  if (i == ec.length) {  
    b.push(a.slice(start))
    
  } else {  
    b.push(a.slice(start,ec[i]-1))
    start = ec[i];
  }
      
}
for (var i = 0; i < b.length; i++) {
  console.log("Array nr:" + (i+1) + ": " + b[i])
}

您需要的是一种算法,而不是特定于Javascript或JQuery的东西。试试这样写:

var initialList = range(1000, 1200);
var exclusions = [1002, 1030, 1040];
var result = [];
var currentSubList = [];
initialRange.forEach(function (v) {
    if (exclusions.indexOf(v) > -1) {
        if (currentSubList.length > 0) {
            result.push(currentSubList);
            currentSubList = [];
        }
    } else {
        currentSubList.push(v);
    }
});
if (currentSubList.length > 0) {
    result.push(currentSubList);
}