Google Script嵌套数组异常:NewViewers数组批量更新问题求助
问题解决:让每个instrumentGroups元素拥有独立的NewViewers数组
问题根源很明确:你在第一个循环外定义了newViewer=[],所有被push到instrumentGroups里的对象,它们的NewViewers属性都指向同一个数组的引用。所以不管你给哪个元素的NewViewerspush内容,所有元素都会同步更新。
直接修改第一个循环,把空数组的创建放到循环内部,让每个文件夹对象都持有独立的NewViewers数组:
var fldrViewers; var instrumentGroups=[], userGoogleAccount; for (nCounter=0; childFolders.hasNext(); nCounter++){ childFolder=childFolders.next(); childFolderName=childFolder.getName(); childFolderID=childFolder.getId(); fldrViewers=childFolder.getViewers().map((user) => user.getEmail()); // 每次循环创建新的空数组,而非复用外部的同一个 instrumentGroups.push({ FolderName : childFolderName, FolderID : childFolderID, FolderViewers : fldrViewers, NewViewers : [] }); } for (userCounter=1; userCounter<=rRows; userCounter++){ for (nCounter=0; nCounter<instrumentGroups.length; nCounter++) { if (rRange.getCell(userCounter, FOLDER_COL).getValue()==instrumentGroups[nCounter].FolderName){ userGoogleAccount=rRange.getCell(userCounter,GOOGLE_ACCOUNT_COL).getValue(); instrumentGroups[nCounter].NewViewers.push(userGoogleAccount); break; } } }
这样修改后,每个instrumentGroups元素的NewViewers都是独立的数组,后续push操作只会影响对应文件夹的数组,不会再出现所有元素同步更新的问题。
内容的提问来源于stack exchange,提问作者Peter Morris
相关产品推荐
相关产品推荐

