检查数组Javascript中是否存在子字符串

时间:2018-09-15 16:10:24

标签: javascript

我想检查数组中是否存在字符串。

我的Java代码:

if(Ressource.includes("Gold") === true )
         {
             alert('Gold is in my arrray');
         }

所以Ressource是我的数组,这个数组包含:

资源[“ Gold 780”,“ Platin 500”] //我打印了它以检查它是否为真

我不明白为什么我的测试if(Ressource.includes("Gold") === true无法正常工作。

最诚挚的问候,我希望有人知道这是怎么回事。

4 个答案:

答案 0 :(得分:2)

includes array method检查字符串"Gold"是否作为数组中的包含,而不检查数组项之一是否包含子字符串。您想为此使用someincludes string method

Ressources.some(res => res.includes("Gold"))

答案 1 :(得分:0)

您应该遍历数组,直到发现值是否存在为止。

if (Ressource.some(x => x.includes("Gold") === true)) {
    alert('Gold is in my arrray');
}

答案 2 :(得分:0)

另一种方法是使用Array.prototype.find()和简单的RegExp。这将返回包含搜索词的元素的值。如大多数答案中所述,如果您的搜索词与数组元素Gold 780完全匹配,Array.prototype.includes()就可以工作。

let Ressource = ["Gold 780","Platin 500"] ;
let found = Ressource.find(function(element) {
let re = new RegExp('Gold');
return element.match(re);
});
console.log(found);
// Working example of Array.prototype.includes()
if(Ressource.includes("Gold 780")) {
  console.log('Gold is in my arrray');
}

工作Fiddle

答案 3 :(得分:0)

您的问题是数组中的字符串中包含数字和Gold。尝试像这样使用正则表达式:

var Ressource = ["Gold 232331","Iron 123"]

if(checkForGold(Ressource) === true ) {
  console.log('Gold is in my array');
} else {
  console.log('Gold is not in my array');
}

function checkForGold(arr) {
   var regex = /Gold\s(\d+)/;
   return arr.some(x=>{if(x.match(regex))return true});
}  

MDN文档具有excellent guide to regular expressions。试试这个吧。