Google Sheets 应用程序脚本查找两个二维数组之间的匹配项,无需 4 个嵌套 for 循环

问题描述 投票:0回答:1

我有两个二维数组。

第一个数组包含所选 ID 的列表:

 ids_list =     [[2,  3], [3, 5]]

第二个保存 ID 和姓名:

control_mapping =  [[1, "name-1"], [2, "name-2"], [3, "name-3"], [4, "name-4"], [5, "name-5"], [6, "name-6"]]

我想做的是用所有选定的 ID 的名称构建一个串联字符串

所以想要的结果是

["name-2\n name-2", "name-3\n name-5"]

我知道我可以做 4 个嵌套的 for 循环,但我希望有比这更有效的东西。 App脚本似乎有很多技巧,但这个ole c程序员还不知道。

非常感谢!

google-apps-script multidimensional-array
1个回答
0
投票

查找两个数组之间的匹配项

function myfunk00() {
  const a1 = [[2, 3], [3, 5]];
  const a2 = [[1, "name-1"], [2, "name-2"], [3, "name-3"], [4, "name-4"], [5, "name-5"], [6, "name-6"]];
  const idA = a2.map(r => r[0]);
  const sNames = a1.reduce((acc,r,i) => {
    let idx = idA.indexOf(r[0]);
    if(~idx) {
      acc.push([i,a2[idx][0],a2[idx][1]]);
    }
    return acc;
  },[["a1-index","a2-col1","a2-col2"]]);
  Logger.log(JSON.stringify(sNames));
}

输出显示在工作表上:

A B C
1 a1-索引 a2-col1 a2-col2
2 0 2 名称-2
3 1 3 名称-3
© www.soinside.com 2019 - 2024. All rights reserved.