使用lodash从字符串数组中查找子字符串

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)


Jam*_*mes 5

两种快速的方法 - 都不使用 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)