javascript - 如何过滤属于数组值一部分的对象?

标签 javascript arrays loops object filter

给出以下数据

[
  {
    "date": "2017-10-04",
    "games": [
      {
        "notes": "Game was played",
        "time": "2017-10-04T20:24:30+00:00",
        "sport": "hockey",
        "owner": "steve",
        "players": "10",
        "game_id": 1
      },
      {
        "notes": "Game was played",
        "time": "2017-10-04T12:35:30+00:00",
        "sport": "lacrosse",
        "owner": "steve",
        "players": "6",
        "game_id": 2
      },
      {
        "notes": "Game was played",
        "time": "2017-10-04T10:12:30+00:00",
        "sport": "hockey",
        "owner": "henry",
        "players": "10",
        "game_id": 4
      }
    ]
  },
  {
    "date": "2017-10-14",
    "games": [
      {
        "notes": "Game was played",
        "time": "2017-10-14T20:32:30+00:00",
        "sport": "hockey",
        "owner": "steve",
        "players": "4",
        "game_id": 3
      },
      {
        "notes": "Game was played",
        "time": "2017-10-14T20:34:30+00:00",
        "sport": "soccer",
        "owner": "john",
        "players": "12",
        "game_id": 5
      }
    ]
  }
]

如何过滤掉对象,以便只显示该日期进行的曲棍球比赛。本质上,我需要返回相同的对象数组,但仅当 games key = sport: hockey

时才应显示该对象

我知道我只能在数组上运行过滤方法,但我不知道如何循环遍历数组内部的对象并再次返回整个对象。任何帮助将不胜感激。

最佳答案

尝试:

const filtered = yourArray.map(item => ({...item, games: item.games.filter(game => game.sport === 'hockey')})

// When run, this produces:
[
    {
        "date": "2017-10-04", 
        "games": [
            {
                "game_id": 1, 
                "notes": "Game was played", 
                "owner": "steve", 
                "players": "10", 
                "sport": "hockey", 
                "time": "2017-10-04T20:24:30+00:00"
            }, 
            {
                "game_id": 4, 
                "notes": "Game was played", 
                "owner": "henry", 
                "players": "10", 
                "sport": "hockey", 
                "time": "2017-10-04T10:12:30+00:00"
            }
        ]
    }, 
    {
        "date": "2017-10-14", 
        "games": [
            {
                "game_id": 3, 
                "notes": "Game was played", 
                "owner": "steve", 
                "players": "4", 
                "sport": "hockey", 
                "time": "2017-10-14T20:32:30+00:00"
            }
        ]
    }
]

我想这就是你想要的。

关于javascript - 如何过滤属于数组值一部分的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46858058/

相关文章:

javascript - 循环迭代避免相同的索引javascript

python - 迭代 CGI 文件中的列表并打印 html 中的值

loops - Angular 2 在 formArrays 上找不到具有未指定名称属性的控件

java - 对于(某事 s : something. getList())

javascript - 在 React 组件之外使用 NextRouter

javascript - 显示为未定义的参数 - 导出的函数 JavaScript

c - 在C中将字符串添加到char数组

JavaScript 将namedNodeMap 转换为字符串

javascript - 根据JS中的索引从数组内部删除数组

JavaScript:隐藏字段的真实表单重置