谷歌应用程序脚本中数组的比较

时间:2021-05-20 11:46:09

标签: arrays google-apps-script comparison

我有以下 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)));

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分:0)

您必须比较两个数组(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))));

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