首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于另一个数组的联接数组

基于另一个数组的联接数组
EN

Stack Overflow用户
提问于 2022-03-28 13:39:42
回答 1查看 32关注 0票数 0

我将between条件应用于基于另一个数组的数组过滤。如果数组长度为1,下面的示例是有效的。如果我有多个数组,那么假设是var expText = ['1-3', '6-9']。那样的话,我想要(Value >= lowerValue1 && Value < upperValue1) || (Value >= lowerValue2 && Value < upperValue2)

代码语言:javascript
复制
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);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-28 13:48:03

在您的filter()中,只需使用some()expText上循环,并将其与每个循环进行比较(这意味着将拆分位移动到循环中)。如果其中至少有一个匹配,some()将返回true。

或者,从技术上讲,它将一直持续到其中一个匹配为止,此时它将返回true --它运行完它们来检查并返回false

代码语言:javascript
复制
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,永远使用constlet”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71648457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档