получить значение из объекта javascript es6 - PullRequest
0 голосов
/ 10 декабря 2018
  let parameters = {
    "lifespanCount": 3,
    "parameters": {
      "fields": {
        "date.original": {
          "stringValue": "tomorrow",
          "kind": "stringValue"
        },
        "duration.original": {
          "stringValue": "3 days",
          "kind": "stringValue"
        },
        "date": {
          "structValue": {
            "fields": {
              "sys.date.recent.original": {
                "stringValue": "tomorrow",
                "kind": "stringValue"
              },
              "sys.date.original": {
                "stringValue": "tomorrow",
                "kind": "stringValue"
              },
              "sys.date": {
                "stringValue": "2018-12-11T12:00:00-05:00",
                "kind": "stringValue"
              },
              "sys.date.recent": {
                "stringValue": "2018-12-11T12:00:00-05:00",
                "kind": "stringValue"
              },
              "sys.date.partial": {
                "stringValue": "2018-12-11T12:00:00-05:00",
                "kind": "stringValue"
              },
              "sys.date.partial.original": {
                "stringValue": "tomorrow",
                "kind": "stringValue"
              }
            }
          },
          "kind": "structValue"
        },
        "yes.original": {
          "stringValue": "",
          "kind": "stringValue"
        },
        "duration": {
          "structValue": {
            "fields": {
              "sys.duration.object": {
                "structValue": {
                  "fields": {}
                },
                "kind": "structValue"
              },
              "sys.duration": {
                "structValue": {
                  "fields": {
                    "unit": {
                      "stringValue": "day",
                      "kind": "stringValue"
                    },
                    "amount": {
                      "numberValue": 3,
                      "kind": "numberValue"
                    }
                  }
                },
                "kind": "structValue"
              },
              "sys.duration.original": {
                "stringValue": "3 days",
                "kind": "stringValue"
              }
            }
          },
          "kind": "structValue"
        },
        "location.original": {
          "stringValue": "china",
          "kind": "stringValue"
        },
        "location": {
          "structValue": {
            "fields": {
              "sys.geo-country.original": {
                "stringValue": "china",
                "kind": "stringValue"
              },
              "sys.geo-country.object": {
                "structValue": {
                  "fields": {}
                },
                "kind": "structValue"
              },
              "sys.geo-country": {
                "stringValue": "China",
                "kind": "stringValue"
              }
            }
          },
          "kind": "structValue"
        }
      }
    }
  }

Объект выше, каков наилучший способ получения значений, например,

let date = parameters.fields['date'].structValue.fields['sys.date'].stringValue;
let country = parameters.fields['location'].structValue.fields['sys.geo-country'].stringValue

, что может быть обычной функцией, так что любой может получить доступ к значению напрямую, если передать объект и ключ, которые я пробовал object.values(), object.keys() также прочитал документы MDN, но не получил больше информации об этом.что моя цель, чтобы получить значение от объекта, когда я передаю любой ключ с объектом.

1 Ответ

0 голосов
/ 10 декабря 2018

Основываясь исключительно на ваших двух примерах, кажется, что самый простой способ:

function getString(paramField, structField) {
  if (parameters.fields[paramField] && parameters.fields[paramField].structValue.fields[structField]) {
  return parameters.fields[paramField].structValue.fields[structField].stringValue;
  } 
  return '';
}

Возможно, необходимо выполнить некоторые дополнительные проверки, в зависимости от вероятности других отклонений от структуры.

Тогда код вызова может быть просто:

let date = getString('date', 'sys.date');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...