【问题标题】:Comparison of arrays in google apps script谷歌应用程序脚本中的数组比较
【发布时间】:2021-05-20 11:46:09
【问题描述】:

我有以下 2 个列表:

array_main = [[01-0158969,315],[01-0161045,699],[01-0161046,500]]
array_helper_both = [[01-0158969,315],[01-0161045,699],[01-0161050,500]]

我正在尝试将 array_main 与 array_helper_both 进行比较,如果有任何差异(array_main 中存在元素但 array_helper_both 中没有元素),那么我尝试将其添加到 array_helper_both。例如,“01-0161046”在array_main 中,但不在array_helper_both 中。

因此 array_helper_both 结果将是:

[[01-0158969,315],[01-0161045,699],[01-0161050,500],[01-0161046,500]]

这是我尝试过但似乎不起作用的代码:

var list3 = array_helper_both.filter(x => !array_main.includes(x));
var list4 = array_helper_both.concat(array_main.filter(x => !array_helper_both.includes(x)));

任何线索/建议将不胜感激。

【问题讨论】:

    标签: arrays google-apps-script comparison


    【解决方案1】:

    您必须比较两个数组(array_mainarray_help_both 中的元素)。最简单的选择是使用JSON.stringify():

    var array_helper_both_string = array_helper_both.map(val => JSON.stringify(val));
    var list4 = array_helper_both.concat(array_main.filter(x => !array_helper_both_string.includes(JSON.stringify(x))));
    

    有关可能(并且可能更好)的替代方案,请参阅以下主题:

    【讨论】:

      【解决方案2】:

      如果它们是平面数组,这将起作用。但它们是二维阵列。你不能比较两个二维数组,就好像它们只是一维数组和一些值if (some_array.includes(some_value))

      在这种情况下,您可能可以将内部数组转换为扁平字符串:

      [01-0158969,315] --> "01-0158969,315"

      比较值,然后将值转回数组:

      "01-0158969,315" --> [01-0158969,315]

      【讨论】:

        猜你喜欢
        • 2023-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多