首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Array.filter未返回所需的输出

Array.filter未返回所需的输出
EN

Stack Overflow用户
提问于 2019-04-24 21:21:45
回答 3查看 55关注 0票数 1

我有一个嵌套的数据数组,我能够根据我的条件获得第一组数据,但是当我在这个结果集上应用array.filter时,它没有给出预期的结果。

下面是数据数组:

代码语言:javascript
复制
{
  "data": [
    {
      "Date": "02/04/2019",
      "Total": "1000",
      "Success": "850",
      "Failure": "150",
      "FailureDeatils": [
        {
          "name": "Reason1",
          "Count": 2,
          "Description": [
            {
              "DescriptionID": "01",
              "Status": "Failure Point1"
            },
            {
              "DescriptionID": "01",
              "Status": "Failure Point1"
            }
          ]
        },
        {
          "name": "Reason2",
          "Count": 6,
          "Description": [
            {
              "DescriptionID": "01",
              "Status": "Failure Point1"
            },
            {
              "DescriptionID": "01",
              "Status": "Failure Point1"
            }
          ]
        }
      ]
    },
    {
      "Date": "03/04/2019",
      "Total": "800",
      "Success": "750",
      "Failure": "150",
      "FailureDeatils": [
        {
          "name": "Reason1",
          "Count": 3,
          "Description": [
            {
              "DescriptionID": "01",
              "Status": "Failure Point1"
            },
            {
              "DescriptionID": "01",
              "Status": "Failure Point1"
            }
          ]
        },
        {
          "name": "Reason2",
          "Count": 1,
          "Description": [
            {
              "DescriptionID": "01",
              "Status": "Failure Point1"
            },
            {
              "DescriptionID": "01",
              "Status": "Failure Point1"
            }
          ]
        }
      ]
    }
  ]
}

首先,我应用了下面的array.filter来获取基于日期的FailureDetails:

代码语言:javascript
复制
 var filtered = data
          .filter(value => data.Date == "02/04/2019")
          .map(e => e.FailureDeatils);

这给了我失败的详细信息和描述,但现在在原因Id上,我想要获取描述,但它不起作用,并返回结果为“未定义”

有没有人能指出我哪里错了?

EN

回答 3

Stack Overflow用户

发布于 2019-04-24 21:25:45

您需要执行value.Date而不是data.Date,因为value引用了data数组中的每个对象:

代码语言:javascript
复制
var data = [{
  "Date": "02/04/2019",
  "Total": "1000",
  "Success": "850",
  "Failure": "150",
  "FailureDeatils": [{
    "name": "Reason1",
    "Count": 2,
    "Description": [{
      "DescriptionID": "01",
      "Status": "Failure Point1"
    }, {
      "DescriptionID": "01",
      "Status": "Failure Point1"
    }]
  }, {
    "name": "Reason2",
    "Count": 6,
    "Description": [{
      "DescriptionID": "01",
      "Status": "Failure Point1"
    }, {
      "DescriptionID": "01",
      "Status": "Failure Point1"
    }]
  }]
}, {
  "Date": "03/04/2019",
  "Total": "800",
  "Success": "750",
  "Failure": "150",
  "FailureDeatils": [{
    "name": "Reason1",
    "Count": 3,
    "Description": [{
      "DescriptionID": "01",
      "Status": "Failure Point1"
    }, {
      "DescriptionID": "01",
      "Status": "Failure Point1"
    }]
  }, {
    "name": "Reason2",
    "Count": 1,
    "Description": [{
      "DescriptionID": "01",
      "Status": "Failure Point1"
    }, {
      "DescriptionID": "01",
      "Status": "Failure Point1"
    }]
  }]
}];


var filtered = data
  .filter(value => value.Date == "02/04/2019")
  .map(e => e.FailureDeatils);
console.log(filtered);

票数 3
EN

Stack Overflow用户

发布于 2019-04-24 21:25:27

看来你说的是value.Date而不是data.Date

代码语言:javascript
复制
.filter(value => value.Date == "02/04/2019")
票数 2
EN

Stack Overflow用户

发布于 2019-04-24 21:34:47

你在筛选器中写错了变量:

应该是:

const filtered = data.filter(value => value.Date == "02/04/2019").map(e => e.FailureDeatils);

和not:

const filtered = data.filter(value => data.Date == "02/04/2019").map(e => e.FailureDeatils);

下面是基于您的代码的工作示例

代码语言:javascript
复制
const object = {
        "data": [
          {
            "Date": "02/04/2019",
            "Total": "1000",
            "Success": "850",
            "Failure": "150",
            "FailureDeatils": [
              {
                "name": "Reason1",
                "Count": 2,
                "Description": [
                  {
                    "DescriptionID": "01",
                    "Status": "Failure Point1"
                  },
                  {
                    "DescriptionID": "01",
                    "Status": "Failure Point1"
                  }
                ]
              },
              {
                "name": "Reason2",
                "Count": 6,
                "Description": [
                  {
                    "DescriptionID": "01",
                    "Status": "Failure Point1"
                  },
                  {
                    "DescriptionID": "01",
                    "Status": "Failure Point1"
                  }
                ]
              }
            ]
          },
          {
            "Date": "03/04/2019",
            "Total": "800",
            "Success": "750",
            "Failure": "150",
            "FailureDeatils": [
              {
                "name": "Reason1",
                "Count": 3,
                "Description": [
                  {
                    "DescriptionID": "01",
                    "Status": "Failure Point1"
                  },
                  {
                    "DescriptionID": "01",
                    "Status": "Failure Point1"
                  }
                ]
              },
              {
                "name": "Reason2",
                "Count": 1,
                "Description": [
                  {
                    "DescriptionID": "01",
                    "Status": "Failure Point1"
                  },
                  {
                    "DescriptionID": "01",
                    "Status": "Failure Point1"
                  }
                ]
              }
            ]
          }
        ]
      }
    
    const filtered = object.data.filter(value => value.Date == "02/04/2019").map(e => e.FailureDeatils);
    
    console.log(filtered);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55831103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档