Joh*_*han 10 javascript arrays include lodash
我正在学习lodash.是否可以使用lodash在字符串数组中查找子字符串?
var myArray = [
'I like oranges and apples',
'I hate banana and grapes',
'I find mango ok',
'another array item about fruit'
]
Run Code Online (Sandbox Code Playgroud)
是否可以确认"oranges"这个词是否在我的数组中?我已经尝试了_.includes,_.some,_.indexOf,但是他们看到完整的字符串而不是子字符串时都失败了
Ada*_*uch 16
您可以使用lodash的高阶函数轻松地为some()构造一个iteratee .例如:
_.some(myArray, _.unary(_.partialRight(_.includes, 'orange')));
Run Code Online (Sandbox Code Playgroud)
的一元()函数确保只有一个参数被传递给回调.所述partialRight()函数是用于施加'orange'值作为第二个参数包括() .第一个参数随每次迭代一起提供some().
但是,如果区分大小写很重要,这种方法将无效.例如,'Orange'将返回false.以下是处理区分大小写的方法:
_.some(myArray, _.method('match', /Orange/i));
Run Code Online (Sandbox Code Playgroud)
该方法()函数创建,将调用传递给它的第一个参数的给定方法的功能.在这里,我们匹配不区分大小写的正则表达式.
或者,如果区分大小写并不重要,并且您只是更喜欢这种method()方法,那么对于ES2015也是如此:
_.some(myArray, _.method('includes', 'orange'));
Run Code Online (Sandbox Code Playgroud)
两种快速的方法 - 都不使用 lodash (抱歉)
var found = myArray.filter(function(el){
return el.indexOf('oranges') > -1;
}).length;
if (found) { // oranges was found }
Run Code Online (Sandbox Code Playgroud)
或者正如我在评论中提到的:
var found = myArray.join(',').indexOf('oranges') > -1;
if (found) { // oranges was found }
Run Code Online (Sandbox Code Playgroud)