【问题标题】:Filter Array by Multiple Matching Values按多个匹配值过滤数组
【发布时间】:2016-11-30 02:59:35
【问题描述】:

我一直在搜索 stackoverflow 问题以尝试了解如何通过多个匹配值过滤数组。

我的数组:

[{"time":"2016-11-30 02:45:00","signal":"Buy","symbol":"AUDNZDecn","price":"1.04605","timeframe":"M15","epoch":"1480473900","candel":"M151480481100"},{"time":"2016-11-30 02:41:00","signal":"Sell","symbol":"AUDJPYecn","price":"84.08700","timeframe":"M1","epoch":"1480473660","candel":"M11480480860"},{"time":"2016-11-30 02:24:59","signal":"Buy","symbol":"EURNZDecn","price":"1.48820","timeframe":"M5","epoch":"1480472699","candel":"M51480479900"}]

您可以看到有 3 个时间范围:M1、M5、M15

我可以使用以下代码按单个“时间范围”进行过滤:

var j = j.filter(function(el) {
            return el.timeframe == timeframe;
});

注意: j 等于来自 AJAX 查询的 JSON 解析服务器响应,该查询与 php 脚本对话,该脚本传回 JSON 响应,也就是上面的数组。

目标:我想了解如何做的是一次过滤数组的多个“时间范围”值,以便当用户单击复选框以组合任何在三个时间范围内,我可以从复选框中提取值并通过用户选择的任何复选框组合过滤数组。前任。 "M1", "M5", "M15", "M1,M5" or M1,M15" or M5,M15" or "M1,M5,M15" 等等。

返回/过滤的新数组将在每个循环中传递给 jquery,然后将遍历数据并将数据附加到 div。 (我已经有这部分工作了)

感谢任何指导!

【问题讨论】:

  • 如果用户单击它,您是否只想将值推送到新数组中?你的事件处理程序在哪里?

标签: javascript jquery arrays json


【解决方案1】:

您可以结合 Array.prototype.filter 和 Array.prototype.some 来过滤掉结果 - 请参阅下面的演示:

var array = [{"time":"2016-11-30 02:45:00","signal":"Buy","symbol":"AUDNZDecn","price":"1.04605","timeframe":"M15","epoch":"1480473900","candel":"M151480481100"},{"time":"2016-11-30 02:41:00","signal":"Sell","symbol":"AUDJPYecn","price":"84.08700","timeframe":"M1","epoch":"1480473660","candel":"M11480480860"},{"time":"2016-11-30 02:24:59","signal":"Buy","symbol":"EURNZDecn","price":"1.48820","timeframe":"M5","epoch":"1480472699","candel":"M51480479900"}];

function filterResults(arr) {
  return array.filter(function(el) {
    return arr.some(function(e) {
      return el.timeframe == e;
    });
  });
}

// pass the required timeframes to filter here
var result = filterResults(['M1','M5']);

console.log(result);
.as-console-wrapper{top:0;max-height:100%!important;}

【讨论】:

  • @user3259138 如果这解决了您的问题,请告诉我,谢谢!
  • 我认为这是我需要遵循的轨道。我试图弄清楚如何做是在我使用 jquery 检查它们是否被选中后获取复选框的值,如果它们被选中,则将选中的值放入一个数组中,然后我将传递给函数
  • @user3259138 很高兴知道过滤部分现在很好,请您投票并关闭这个问题,谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
  • 2020-12-02
  • 2016-05-28
  • 1970-01-01
相关资源
最近更新 更多