【发布时间】:2022-10-04 16:04:29
【问题描述】:
假设我们有 2 个数组
a = ['1', '2', '3', '4', '5']
b = ['1', '3', '5']
这2个数组的区别
diff = a.filter(x => !b.includes(x));
所以差异等于['2', '4']
我的问题是我可以
a = ['1', '2', '3(4)', '4', '5'] // (I have 4 occurrencies of "3")
b = ['1', '3', '5']
// or
b = ['1', '3(3)', '5']
我想得到这个数组
diff = ['2', '3(3)', '4']
// or
diff = ['2', '3', '4']
【问题讨论】:
-
...b.includes(x.split("(")[0])在搜索之前丢弃括号内容。如果您想考虑这些计数,它会更加复杂,并且您最好使用查找表对象或集合。 -
@dandavis 不会返回所需的结果。结果如何将
3(4)更改为3(3)? -
@Barmar 不会。亲吻,带有关于更复杂选项的“警告”。
-
在小范围内,我会编写一个将
3(2)转换为3, 3的paren 解码器,运行朴素算法,然后编写一个执行反向操作的paren 编码器。 -
我首先将数组转换为
['1', '2', '3', '3', '3', '3', '4', '5']之类的东西。然后循环第二个数组,从第一个数组中删除一个匹配元素。然后您可以将结果转换回紧凑形式。
标签: javascript arrays