javascript - 谷歌应用脚本遍历对象
问题描述
我已经搜索和搜索,但找不到更好的方法来搜索 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 || []))
}
}
解决方案
推荐阅读
- python - argparse POST 一个数组或列表
- javascript - RegExp javascript,获取冒号之间但未包含在 qoutes 中的单词
- javascript - Redux reducer 获取字符串而不是对象
- eclipse - Spring Boot/Eclipse index.html:出现意外错误(类型=未找到,状态=404)
- artificial-intelligence - 这种语言是否通用/强大到足以用于通用游戏 AI?
- javascript - 在播放时获取 youtube 视频的当前时间
- java - 如何忽略登录表单上的 Spring 数据验证?
- python - 在 python 中使用 tkinter 创建一个“新用户”弹出窗口
- javascript - 是否有任何可以重用现有 React 组件和 CSS 的跨平台框架?
- c# - 使用 C# 部署 Solidity 合约