我将between条件应用于基于另一个数组的数组过滤。如果数组长度为1,下面的示例是有效的。如果我有多个数组,那么假设是var expText = ['1-3', '6-9']。那样的话,我想要(Value >= lowerValue1 && Value < upperValue1) || (Value >= lowerValue2 && Value < upperValue2)
var Annual = [{"Date":1998,"Value":6.5},{"Date":1999,"Value":4},{"Date":2000,"Value":1},{"Date":2001,"Value":3}]
var expText = ['1-3']
expText2 = expText[0].match(/\d+/g);
lowerValue = parseInt(expText2[0]);
upperValue = parseInt(expText2[1]);
result = Annual.filter(function(v) { return (v.Value >= lowerValue && v.Value < upperValue) })
console.log(result);
发布于 2022-03-28 13:48:03
在您的filter()中,只需使用some()在expText上循环,并将其与每个循环进行比较(这意味着将拆分位移动到循环中)。如果其中至少有一个匹配,some()将返回true。
或者,从技术上讲,它将一直持续到其中一个匹配为止,此时它将返回true --它运行完它们来检查并返回false。
const Annual = [{"Date":1998,"Value":6.5},{"Date":1999,"Value":4},{"Date":2000,"Value":1},{"Date":2001,"Value":3}];
const expTexts = ['1-3', '6-9'];
const result = Annual.filter(function(v) {
return expTexts.some(expText => {
const expText2 = expText.match(/\d+/g);
const lowerValue = parseInt(expText2[0]);
const upperValue = parseInt(expText2[1]);
return (v.Value >= lowerValue && v.Value < upperValue);
});
});
console.log(result);
附带注意:必须“永远,永远,永远不要使用var,永远使用const或let”。
https://stackoverflow.com/questions/71648457
复制相似问题