两个字符串中的字符交叉

时间:2017-01-17 22:19:24

标签: javascript lodash

我有一个带有字符串的对象。

filteredStrings = {search:'1234', select:'1245'}

我想返回

'124'

我知道我可以把它变成一个数组,然后循环遍历每个值并测试其他字符串内部的值,但是我正在寻找一种更简单的方法来做到这一点。最好是Lodash。

我找到了_.intersection(Array,Array),但这仅适用于Arrays。

https://lodash.com/docs#intersection

我希望能够在不必将对象转换为数组然后循环遍历每个值的情况下执行此操作,因为这可能会包含大量信息,并且我希望它尽可能快地工作。 / p>

谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

将其中一个字符串(search)转换为RegExp字符集。在另一个字符串(select)上使用带有String#match的RegExp。

注意:与lodash的交集不同,结果字符不是唯一的,因此例如4可以出现两次。

var filteredStrings = {search:'1234', select:'124561234'}

var result = (filteredStrings.select.match(new RegExp('[' + filteredStrings.search + ']', 'g')) || []).join('');

console.log(result);