Сценарий Google Apps Перемещение объекта - PullRequest
0 голосов
/ 27 июня 2018

Я искал и искал, но не могу найти лучшего способа поиска по объекту JSON и возврата вложенного объекта, соответствующего определенному ключу.

Я нашел примеры, которые работают в javascript, но когда я пытаюсь использовать этот код в Google Apps Script, я обнаруживаю, что некоторые функции / модули не поддерживаются.

глубоко Сценарий ниже работает, где objRet является глобальной переменной, но мне было интересно, есть ли лучший способ сделать это?

var objRet;

function blahblah() {
    traverse(api_info, "EarningsRates");
    // use this.objRet to process code
}


function traverse(json, keyData) {
   var keyData = keyData;
   var json = json;

   if (Array.isArray(json)) {
        json.forEach(traverse);
    } else if (typeof json === 'object') {
       Object.keys(json).forEach(function(key) {
            if (key === keyData) {
              this.retObj = json[key];
            } else {
               traverse(json[key], keyData);
            }
        });

    }

} 

Я нашел это и хотел бы заставить его работать, но не повезло с Google Apps Script

Эта функция реализует DFS: (поиск в глубину)

function findDFS(objects, id) {
  for (let o of objects || []) {
    if (o.uuid == id) return o
    const o_ = findDFS(o.children, id)
    if (o_) return o_
  }
}

И BFS: (поиск в ширину)

function findBFS(objects, id) {
  const queue = [...objects]
  while (queue.length) {
    const o = queue.shift()
    if (o.uuid == id) return o
    queue.push(...(o.children || []))
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...