【发布时间】:2020-10-07 06:45:50
【问题描述】:
我有一个 JavaScript 异构数组,看起来像:
let bigArray = [["A", "B", 221.67],["C", "B", 221.65],["B", "D", 183.33],["B", "A", 4900],["E", "B", 150],["A", "B", 150]]
现在,如果第一个和第二个元素与下一个数组的第一个和第二个元素(在多维数组中)匹配,我想添加第三个元素(数字),然后添加两个数组的第三个元素(数字)&如果反向也执行减法运算找到了这些元素中的匹配项。
输出将是:
let ans = [["B", "A", 4528.33],["C", "B", 221.65],["B", "D", 183.33],["E", "B", 150]]
子数组["B","A", 4528.33]由减法组成,即4900-221.67-150
在 bigArray 中有重复的元素对,如“A”和“B”(在单个子数组中)。因此,对于所有匹配的子数组执行求和运算,如果找到该匹配子数组的反转,则执行减法运算。 i,e=> 4900-221.67-150
我尝试了很多方法,但无法在所有情况下都达到所需的输出。任何帮助将不胜感激,谢谢
【问题讨论】:
-
SO 不是免费的代码服务。请至少包含您为解决此问题所做的尝试。
-
加减值有什么条件?前两个值的顺序?
-
@NinaScholz 我正在尝试模拟 splitwise / kitty split,因此对于 2 个用户之间的更多交易,我想添加他们的金额并在找到反向匹配时执行减法操作
-
@Shivashankar Nina 想说的是,“AB”和“BA”——>“AB”首先在数组中找到,所以根据你的解释,“BA”将是减号运算,什么会导致 221.67-4900,毕竟是负面结果。但是您的输出希望 4528.33 为正数。什么使 4528.33 在这里是积极的而不是 -4528.33
-
@MoxxiManagarm 假设考虑是否有任何组合说如果“BA”结果为负,那么我们需要更改顺序(反向)并将其存储为“AB”,结果为正。这意味着对于我们在执行此操作时遇到的每个负值,我们需要反转顺序并将数量(数字)存储为正数。
标签: javascript arrays data-structures merge reduce