首页 > 解决方案 > 谷歌应用脚​​本遍历对象

问题描述

我已经搜索和搜索,但找不到更好的方法来搜索 JSON 对象并返回与特定键对应的嵌套对象。

我找到了适用于 javascript 的示例,但是当我尝试在 Google Apps 脚本中使用该代码时,我发现某些函数/模块不受支持。

深深地 下面的脚本在 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 脚本没有运气

这个函数实现了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 || []))
  }
}

标签: javascriptobjectgoogle-apps-script

解决方案


推荐阅读