Ramda,检查(过滤器)字符串数组是否包含子字符串

时间:2018-08-29 11:01:55

标签: javascript arrays string filter substring

例如,我有一个数组:

let data = [ 'abc', 'dfgx', 'dfgxabc', 'xyzz' ]

并测试子字符串:

const searchStr = 'abc'

我需要另一个包含data数组中所有匹配值的数组。

let result = ['abc', 'dfgxabc']

在我的任务中,我从键盘输入中获取了一个字符串,它至少可以包含3个字符。就像实时搜索一样。

我正在尝试使用Ramda:

const data = [ 'abc', 'dfg', 'xyz' ]

const searchStr = 'abc'

const filtered = R.filter(R.match(new RegExp(searchStr, 'i')), data)

2 个答案:

答案 0 :(得分:0)

您可以在Array.prototype.filterRegExp.prototype.test的帮助下使用本机js完成此操作

const data = [ 'abc', 'dfgx', 'dfgxabc', 'xyzz' ];

const searchStr = 'abc';

const filtered = data.filter(s => new RegExp(searchStr, 'ig').test(s));

console.log(filtered);

答案 1 :(得分:0)

为了直接回答问题,

const data = [ 'abc', 'dfgx', 'dfgxabc', 'xyzz' ];

const findABC = filter(test(/abc/));

findABC(data)

与使用Ramda等效。看看REPL