当前位置: 首页 > 知识库问答 >
问题:

JavaScript.includes()方法的多个条件

郎雪风
2023-03-14

只是想知道,有没有办法向 .include 方法添加多个条件,例如:

    var value = str.includes("hello", "hi", "howdy");

想象一下逗号表示“或”。

它现在询问字符串是否包含hello,hi或howdy。所以只有一个,且只有一个条件为真。

有做那个的方法吗

共有3个答案

柳镜
2023-03-14

即使有一个,这也应该有效,并且只有一个条件为真:

var str = "bonjour le monde vive le javascript";
var arr = ['bonjour','europe', 'c++'];

function contains(target, pattern){
    var value = 0;
    pattern.forEach(function(word){
      value = value + target.includes(word);
    });
    return (value === 1)
}

console.log(contains(str, arr));
益银龙
2023-03-14

对于< code>includes(),答案是否定的,但是您可以通过< code>test()用REGEX实现同样的事情:

var value = /hello|hi|howdy/.test(str);

或者,如果单词来自动态来源:

var words = ['hello', 'hi', 'howdy'];
var value = new RegExp(words.join('|')).test(str);

REGEX 方法是一个更好的主意,因为它允许您将单词匹配为实际单词,而不是其他单词的子字符串。您只需要单词边界标记 \b,因此:

var str = 'hilly';
var value = str.includes('hi'); //true, even though the word 'hi' isn't found
var value = /\bhi\b/.test(str); //false - 'hi' appears but not as its own word
曹季同
2023-03-14

您可以使用此处引用的.一些方法。

< code>some()方法测试数组中是否至少有一个元素通过了由提供的函数实现的测试。

// test cases
const str1 = 'hi hello, how do you do?';
const str2 = 'regular string';
const str3 = 'hello there';

// do the test strings contain these terms?
const conditions = ["hello", "hi", "howdy"];

// run the tests against every element in the array
const test1 = conditions.some(el => str1.includes(el));
const test2 = conditions.some(el => str2.includes(el));
// strictly check that contains 1 and only one match
const test3 = conditions.reduce((a,c) => a + str3.includes(c), 0) == 1;

// display results
console.log(`Loose matching, 2 matches "${str1}" => ${test1}`);
console.log(`Loose matching, 0 matches "${str2}" => ${test2}`);
console.log(`Exact matching, 1 matches "${str3}" => ${test3}`);
 类似资料:
  • 这里我试图用jpa从mysql数据库中获取数据,但是我被findby绊倒了,如何使用Crudepository spring数据jpa为下面的查询编写findby方法? 我试过这个,但它不工作: 我有这样的实体类:

  • 问题内容: 我正在重构现有代码。它实际上可以正常工作,但是在检查一个变量的值并将第二个变量的值更改为取自固定枚举结构的更新后的值的多个if-else条件下有点混乱。 我对重构和清理此代码的最佳方法感到有些困惑。您是否建议使用开关?还是更优雅的东西? 提前致谢! 问题答案: 至少对于J2SE 1.5转发,您可以为枚举赋予额外的属性。这意味着您可以用类似如下的内容替换整个if-else字符串 现在,在

  • 本文向大家介绍mybatis collection 多条件查询的实现方法,包括了mybatis collection 多条件查询的实现方法的使用技巧和注意事项,需要的朋友参考一下 mybatis collection 多条件查询的实现方法 前言: 业务需要通过mybatis 查询返回嵌套集合,嫌多次查询太麻烦,用自带的高级查询解决问题,下边是代码,已测试通过。 说下自己的理解,就是一个主查询结果集

  • 我在dynamoDB中有带分区键和范围键的表。 表结构 现在,我想使用C#库在多个扫描条件下从表中检索数据。 Hashkey=123 条件1;日期在“某个日期1”和“某个日期2”之间 条件2。范围键begins_with I_和p_ 有什么方法可以使用C#dynamoDB API实现这一点吗?请帮忙

  • 问题内容: 我有一个小代码问题,它适用于IDLE而不适用于Eclipse,我可以这样写吗: 代替这个: 谢谢。 问题答案: 使用和顺序: 它针对一个元组进行测试,哪个Python将方便而有效地将其存储为一个常量。您还可以使用设置文字: 但只有Python的最新版本(Python 3.2 和更高版本)才会将此视为不变的常量。对于更新的代码,这是最快的选择。 因为这是一个字符,所以您甚至可以使用字符串

  • 我想这样做: 我在想有没有更干净的方法来写这种东西。我期待一些东西像签名,它需要一个可比变量并选择第一个非零。

  • 我有一个数据帧,我想删除a列等于蓝色,B列等于绿色的所有行。 我认为下面的应该工作,但事实并非如此。 有人看到问题了吗