【问题标题】:Javascript function to pull data from JSON?从 JSON 中提取数据的 Javascript 函数?
【发布时间】:2020-02-18 20:38:24
【问题描述】:

如何创建一个 javascript 函数来根据单词从 JSON 中提取数据?我正在使用任务管理器 API,并希望根据任务标题填充字段。例如:

{
 "data": {
    "boards": [
      {
        "owner": {
          "id": 555555555
        },
        "groups": [
          {
            "id": "new_group",
            "title": "Forecasts",
            "items": [
              {
                "id": "355670938",
                "name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"
              }
            ]
          }
        ]
      }
    ]
  },
  "account_id": 55555555
}

我需要从 items.name 中提取的 DATE、TIME、DURATION 和 TYPE 信息。我如何设置一个函数来提取这些信息?

【问题讨论】:

  • 这个问题方式对于 Stack Overflow 的问答格式来说太宽泛了 - 这个网站不是免费的代码编写服务。我们希望至少能看到解决问题的尝试(请参阅:Minimal, Verifiable example),并提供有关您遇到问题的地方以及您的尝试未满足您的要求的原因的信息。

标签: javascript json graphql


【解决方案1】:

假设| 从未在数据中使用过,您可以这样做:

items.name.split('|').filter(data => /^(DATE:|TIME:|DURATION:|TYPE:)/.test(data));

【讨论】:

    【解决方案2】:

    JSON.parse() 接受 JSON 字符串并将其转换为 JavaScript 对象。从那里您可以返回所需键的值。

    【讨论】:

      【解决方案3】:

      您首先需要找到要从中提取信息的位置。

      然后你只需在管道上拆分,然后在冒号上拆分。

      let targetStr = getTree().data.boards[0].groups[0].items[0].name;
      let fields = ['DATE', 'TIME', 'DURATION', 'TYPE'];
      
      console.log(extractData(targetStr, fields));
      
      function extractData(str, fields) {
        return str.split(/\s*\|\s*/).reduce((res, entry) => {
          let dat = entry.split(/\s*:\s*/);
          return fields.indexOf(dat[0]) > -1 ? Object.assign(res, { [dat[0]]: dat[1] }) : res;
        }, {});
      }
      
      function getTree() {
        return {
          "data": {
            "boards": [{
              "owner": {
                "id": 555555555
              },
              "groups": [{
                "id": "new_group",
                "title": "Forecasts",
                "items": [{
                  "id": "355670938",
                  "name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"
                }]
              }]
            }]
          },
          "account_id": 55555555
        };
      }
      .as-console-wrapper {
        top: 0;
        max-height: 100% !important;
      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多