如何在Google Script中循环遍历JSON提取resource_id生成目标列表
实现代码
基础循环版本(易理解,兼容所有Google Script运行环境)
function extractResourceIds() { // 你的原始JSON数据 var dataStringify = { "items": [ { "events": [ { "parameters": [ { "name": "resource_id", "value": "1" } ] } ] }, { "events": [ { "parameters": [ { "name": "resource_id", "value": "2" } ] } ] }, { "events": [ { "parameters": [ { "name": "resource_id", "value": "3" } ] } ] } ] }; var resultList = []; // 逐层遍历嵌套数组 for (let i = 0; i < dataStringify.items.length; i++) { const currentItem = dataStringify.items[i]; for (let j = 0; j < currentItem.events.length; j++) { const currentEvent = currentItem.events[j]; for (let k = 0; k < currentEvent.parameters.length; k++) { const currentParam = currentEvent.parameters[k]; if (currentParam.name === "resource_id") { // 如需数字类型可改为 resultList.push(Number(currentParam.value)) resultList.push(currentParam.value); } } } } Logger.log(resultList); // 输出 ["1","2","3"],转数字后为 [1,2,3] return resultList; }
简洁数组方法版本
function extractResourceIdsShort() { var dataStringify = /* 此处放入你的JSON数据 */; const resultList = dataStringify.items .flatMap(item => item.events) .flatMap(event => event.parameters) .filter(param => param.name === "resource_id") // 如需数字类型改为 .map(param => Number(param.value)) .map(param => param.value); Logger.log(resultList); return resultList; }
说明
- 两种写法都兼容参数数组存在多值、空值的场景,不会出现索引越界错误
- 如需输出数字类型的列表,只需按照代码注释修改对应行即可,最终返回结果为
[1,2,3]
内容的提问来源于stack exchange,提问作者W.Lyman
相关产品推荐
相关产品推荐

