Функция для построения линии для извлечения данных из JSON - PullRequest
0 голосов
/ 22 декабря 2018

Я пишу функцию, которая принимает аргументы и добавляет их, чтобы сформировать строку для поиска данных в файле JSON.Я определил переменную для readFileSync и добавил к ней аргументы функции для поиска данных.

var jf = require('jsonfile'),
    file = 'logins.json',
    i = 1;

var jsonData = jf.readFileSync(file);

function getJSONData() {
  var n = 1;
  var com = '';

  do {
    if (arguments[n] !== undefined) {
      com += `['${arguments[n]}']`;
    }

    n++;
  } while (n < arguments.length);

  return com;
}

var h = getJSONData(i, 'operator', 'id');

console.log(jsonData[i] + h);

Это мой JSON:

[
  {
    "operator": {
      "id": "avalle",
      "pass": "Aa123456",
      "something": "idk",
      "account": [
        {
          "type": "asd",
          "idk": "asd"
        },
        {
          "type": "asd",
          "idk": "asd"
        }
      ]
    }
  },
  {
    "operator": {
      "id": "oleal",
      "pass": "Aa123456",
      "something": "idk",
      "account": [
        {
          "type": "asd",
          "idk": "asd"
        },
        {
          "type": "asd",
          "idk": "asd"
        }
      ]
    }
  }
]

Я должен получить строку jsonData[i]['param1']['param2'], которая находит данные в файле.

Вместо этого я получаю undefined или [object Object]['operador']['id']

1 Ответ

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

Если вы хотите, чтобы свойство возвращалось из функции, вы можете внести это изменение:

function getJSONData(jsonData) {
  var n = 1;
  var result = jsonData;

  do {
    if (result[arguments[n]]) {
      result = result[arguments[n]]
    } else {
        console.error(`Property ${arguments[n]} does not exist on obj:`, result)
    }

    n++;
  } while (n < arguments.length);

  return result;
}

var h = getJSONData(jsonData[i], 'operator', 'id');

В противном случае вы возвращаете строку из getJSONData, которая выглядит как "[prop1][prop2]", и она не будет извлекатьсвойство, пытаясь конкатировать Object + string

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...