javascript - 比较和获取谷歌脚本中两个数组的值

标签 javascript google-apps-script google-sheets

这是input ,

colA = [1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3];
colB = [1.1 ,1.1 ,1.2 ,1.3, 1.3, 'ab', 2.1, 2.1, 2.2, 2.2, 'ab', 3.1, 3.2, 3.3, 3.3, 3.3, 'ab'];
  • 两个数组的长度相同。
  • 如果 colA 中总共有 6 个“1”,那么 colB 中将只有 6 个 1 项 (1._)。

我希望控制台中的输出如下所示:

1, 1.1, count of 1.1 = 2
1, 1.2, count of 1.2 = 3
1, 1.3, count of 1.3 = 2
1, AB,  count of AB  = 1
2, 2.1, count of 2.1 = 2
2, 2.2, count of 2.2 = 2
2, AB,  count of AB  = 2
.
.
.
//or something like this where I must get these three values.

代码:

for(i=0; i < colA.length; i++)
{
 for(j=0; j < colB.length; j++) 
 {
  // what to do here to compare the values.
 }
}

我是否应该使用两个 for 循环,因为我希望代码得到真正的优化,因为将有大约 10k 行数据。 接受任何建议。感谢您的帮助。

最佳答案

您可以使用单个循环进行迭代,并使用后继者检查值并递增count

如果不相等,则输出并重置计数为一。

var colA = [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3],
    colB = [1.1, 1.1, 1.2, 1.3, 1.3, 'ab', 2.1, 2.1, 2.2, 2.2, 'ab', 3.1, 3.2, 3.3, 3.3, 3.3, 'ab'],
    count = 1,
    i,
    length = colA.length;
   
for (i = 0; i < length; i++) {
    if (colB[i] === colB[i + 1]) {
        count++;
        continue;
    }
    console.log(colA[i], colB[i], count);
    count = 1;
}

关于javascript - 比较和获取谷歌脚本中两个数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61230808/

相关文章:

javascript - 如何在html中水平显示div?

google-sheets - 如何找到谷歌表格中第三个最常见的值

javascript - 从 Facebook 群组中选择最喜欢的帖子

google-apps-script - 我可以创建 google 工作表标签并将标签的格式粘贴到它们吗?

user-interface - 如何将数据从 HTML 服务 (UI) 返回到 google 电子表格

javascript - 通过应用 ArrayFormula 的邮件脚本选取正确的单元格值

google-apps-script - 将空单元格排序到顶部

javascript - 在 jquery 中将预填充表单制作为 HTML 表

javascript - 基于简单 iframe 的 AJAX 脚本 : first call yields 'null' element, 后续调用工作完美。我在这里不明白什么?

javascript - 侧边栏不会强制触摸父 Div 的底部