首页 > 解决方案 > 如何从数组中返回所述值

问题描述

我有以下数组:

var Boletins = [
{
    id:1, items:
    [
        {
            "#": "1",
            "Data": "19 a 25 de Março de 2021",
            "Região": "região de Trás-Os-Montes e Alto Douro",
            "Niveis": "muito elevados",
            "PoleneArvore": "cipreste, pinheiro",
            "PoleneErva": "urtiga, gramíneas"
        },
        {
            "#": "2",
            "Data": "19 a 25 de Março de 2021",
            "Região": "região de Entre Douro e Minho",
            "Niveis": "muito elevados",
            "PoleneArvore": "plátano, pinheiro, carvalhos, cipreste",
            "PoleneErva": "urtiga"
        }]}];

以下循环选择“数据”字段:

const data = Boletins.filter(x => x.id === 1).flatMap(data => data.items);

data.forEach(x => {
    window.alert(x["Data"]);
});

如您所见,两个“数据”字段是相同的,我的循环返回两个字段。我的问题是,我怎样才能改变它以便它只返回第一个“数据”值id:1, items

标签: javascriptarraysloops

解决方案


ID 是唯一标识符。过滤 ID 是没有意义的。应该只有一个具有此 ID 的元素。

var Boletins = [
{
    id:1, items:
    [
        {
            "#": "1",
            "Data": "19 a 25 de Março de 2021",
            "Região": "região de Trás-Os-Montes e Alto Douro",
            "Niveis": "muito elevados",
            "PoleneArvore": "cipreste, pinheiro",
            "PoleneErva": "urtiga, gramíneas"
        },
        {
            "#": "2",
            "Data": "19 a 25 de Março de 2021",
            "Região": "região de Entre Douro e Minho",
            "Niveis": "muito elevados",
            "PoleneArvore": "plátano, pinheiro, carvalhos, cipreste",
            "PoleneErva": "urtiga"
        }]}];

const data = Boletins.find(x => x.id === 1)?.items[0];

if (data) {
    window.alert(data.Data);
}

假设所有项目都有一个Data属性(否则您的代码会导致错误消息),您正在寻找items. 您可以使用它访问它items[0]


推荐阅读