使用jquery删除两个数字之间的数组元素

时间:2016-04-19 12:18:18

标签: jquery

必须删除另一个数组中元素范围内的数组元素

我的第一个阵列

var arr = ['900','930','1000','1030','1100','1130','1200','1230','1300','1330','1400','1430','1500']

另一个结果数组是

var data =['900','1000','1300','1400']

我的输出数组应该是

output = ['1030','1100','1130','1200','1230','1430','1500','1530']

我尝试使用for循环和切片,但无法删除元素范围。

for(var i=0;i<data.length;i++){
    if(jQuery.inArray(data[i], arr) !== -1){
      arr.splice(data[i]);
    }                           
}

1 个答案:

答案 0 :(得分:0)

你不需要jQuery。然而,它不会使用字符串,所以我将所有内容都改为数字:

&#13;
&#13;
var arr = [900,930,1000,1030,1100,1130,1200,1230,1300,1330,1400,1430,1500];

/** create an array of ranges **/
var ranges = [900,1000,1300,1400].reduce(function(tupples, item, index) {
    if(index % 2 === 0) {
      tupples.push([item]);
    } else {
      tupples[tupples.length - 1].push(item);
    }

    return tupples;
}, []);

/** filter the original array to get a new array of items that are not in one of the ranges **/
var result = arr.filter(function(item) {
    return ranges.every(function(range) {
      return item < range[0] || item > range[1];
    });
});

document.getElementById('demo').innerHTML = JSON.stringify(result);
&#13;
<pre id="demo"></id>
&#13;
&#13;
&#13;

P.S。如果你想在字符串而不是数字中使用数字 - 替换这个 - return item < range[0] || item > range[1]; 这个 - return Number(item) < Number(range[0]) || Number(item) > Number(range[1]);