javascript - 按数组过滤数组 Underscore JS

标签 javascript jquery underscore.js

我正在尝试根据多选中选定的复选框( Bootstrap Multiselect to be precise ),通过 TeamID(一个数组)过滤掉“玩家”。

我可以正常工作,但要求发生了变化,玩家可以在多个团队中。 (抱歉,我没有 JSFiddle/CodePen,Bootstrap Multiselect 没有 CDN,而且它们都运行得不好)

这就是我为各个团队提供的有效方法。

var temp = [];

_.each(selected, function(i){
            temp.push(_.filter(allPlayers, function(obj){
                return obj.TeamID == i;
            }));
});

但是我需要按数组过滤数组。

JSON

var allPlayers = [{
     "TeamID": [100001, 100002],
     "PlayerID": 1,
     "PlayerName" : "Pete Tong"
    },
    {
     "TeamID": [100001, 100002],
     "PlayerID": 2,
     "PlayerName" : "Will Chamberlain"
    },
    {
     "TeamID": [100002, 100003],
     "PlayerID": 3,
     "PlayerName" : "Jane Doe"
    },
    {
     "TeamID": [100004],
     "PlayerID": 4,
     "PlayerName" : "John Doe"
}];

我已经尝试过了 Filter two different structured arrays underscore js但它似乎不适用于我的解决方案。

选定的数组

 var teams = $('#team-list option:selected');
 var selected = [];

 $(teams).each(function(index, team){
        selected.push($(this).val());
 });

最佳答案

如果您使用filter(),则不需要额外的外部变量:

var allPlayers = [{
     "TeamID": [100001, 100002],
     "PlayerID": 1,
     "PlayerName" : "Pete Tong"
    },
    {
     "TeamID": [100001, 100002],
     "PlayerID": 2,
     "PlayerName" : "Will Chamberlain"
    },
    {
     "TeamID": [100002, 100003],
     "PlayerID": 3,
     "PlayerName" : "Jane Doe"
    },
    {
     "TeamID": [100004],
     "PlayerID": 4,
     "PlayerName" : "John Doe"
}];



var selected=[100003, 100004]; // change this 

var filtered= allPlayers.filter(function(a){
    return selected.some(function(team){
      return a.TeamID.indexOf(team)!==-1;
    });
});

alert(JSON.stringify(filtered, null, "\t"));

演示:http://pagedemos.com/qejbsz722hs3/2

编辑:添加了多对多搜索。

关于javascript - 按数组过滤数组 Underscore JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31581667/

相关文章:

javascript - 按多个值分组 Underscore.JS 但保留键和值

typescript - 在每年的每个月下划线 js 组

javascript - 如何获取位于表格单元格中的按钮的路径

javascript - Vue.js - 如何在滚动时为我的 div 设置动画

javascript - JQuery Mobile 和 Phonegap - 垂直滚动断断续续/更难

javascript - 如何查看当前正在执行的 javascript 代码?

javascript - jQuery Cycle、Internet Explorer 和图像映射

javascript - 自动制作 bootstrap 垂直导航丸

javascript - 将数据存储在模型中并从 Collection 和 Fetch 中调用

javascript - 将复制和粘贴功能添加到 Web 应用程序的自定义菜单