You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将二维数组转换为对象?(Google Sheets脚本场景)

解决方案:将二维数组转换为键值对对象

这里有几种简单高效的方法,能把你的folderIds二维数组转换成目标格式的对象,方便你用names数组中的名称直接取值:

方法1:使用reduce(推荐,功能灵活)

reduce方法可以直接遍历数组并累加出目标对象,是处理这类转换的常用方式:

const folderIdsObj = folderIds.reduce((acc, [name, id]) => {
  acc[name] = id;
  return acc;
}, {});
  • 逻辑:初始化一个空对象{}作为累加器acc,遍历folderIds中的每个子数组,通过解构赋值直接取出name(子数组第一个元素)和id(子数组第二个元素),将键值对添加到累加器中,最后返回完成的对象。

方法2:使用forEach(直观易懂,适合新手)

如果觉得reduce有点抽象,用forEach循环逐个赋值更直白:

const folderIdsObj = {};
folderIds.forEach(row => {
  const name = row[0];
  const folderId = row[1];
  folderIdsObj[name] = folderId;
});
  • 逻辑:先创建空对象,然后遍历二维数组的每一行,把每行的第一个元素作为对象的键,第二个元素作为对应的值。

方法3:使用map + Object.fromEntries(简洁ES6+写法)

你提到了map方法,结合Object.fromEntries可以一行完成转换(Google Apps Script已支持该语法):

const folderIdsObj = Object.fromEntries(
  folderIds.map(row => [row[0], row[1]])
);
  • 逻辑:map把二维数组的每一行转换成[键, 值]的格式,再通过Object.fromEntries将这个数组直接转换成对象。

使用示例

转换完成后,你就可以像计划的那样通过名称取值:

for (let i = 0; i < names.length; i++) {
  const currentName = names[i];
  const currentFolderId = folderIdsObj[currentName];
  // 这里处理拿到的文件夹ID,比如操作Google Drive
  if (currentFolderId) {
    // 存在对应ID的逻辑
  } else {
    // 名称未找到的处理逻辑,比如提示或跳过
  }
}

内容的提问来源于stack exchange,提问作者Rosie Muir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:06:04