如何用单行代码过滤和修改对象数组?

时间:2019-05-30 18:12:42

标签: javascript reactjs react-hooks

我的数据库中包含以下对象数组:

#This one prints

from bs4 import BeautifulSoup
import requests
import lxml

url = 'https://osu.ppy.sh/users/12008062'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'lxml')

for i in soup.select('span.nav2__menu-link-main-text'):
    print(i.text)

#This one does not print

from bs4 import BeautifulSoup
import requests
import lxml

url = 'https://osu.ppy.sh/users/12008062'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'lxml')

for i in soup.select('div.value-dispaly__value'):
    print(i.text)

当我从数据库中获取数据时,我需要将其存储在客户端的dataFromDB = [ { src: 'stringWithSource1', selected: true }, { src: 'stringWithSource2', selected: false }, { src: 'stringWithSource3', selected: true }, AND SO ON... ]; 中,该{strong>必须是字符串数组,其中仅包含 {{1} } state对象的属性。

示例:

src

问题

我为其分配代码的行如下所示(请参见下面的代码):

我尝试过,但是那行不通,因为我将未选择的selected: true保留为myState = [ 'stringWithSource1', 'stringWithSource3', AND SO ON... ] ,而不仅仅是跳过了它们。

src

如何在这样的一行中实现此行为?我知道我可以创建一个辅助变量并进行处理。但在这种情况下,我想要单线。这可能吗?感觉我应该同时过滤和映射?

1 个答案:

答案 0 :(得分:5)

您需要两部分,因为过滤不会映射值,而是原始项。

您可以按selected进行过滤,然后映射src

images: dataFromDB.images
    .filter(({ selected }) => selected)
    .map(({ src }) => src)