必须删除另一个数组中元素范围内的数组元素
我的第一个阵列
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]);
}
}
答案 0 :(得分:0)
你不需要jQuery。然而,它不会使用字符串,所以我将所有内容都改为数字:
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;
P.S。如果你想在字符串而不是数字中使用数字 -
替换这个 - return item < range[0] || item > range[1];
这个 - return Number(item) < Number(range[0]) || Number(item) > Number(range[1]);