我想检查数组中是否存在字符串。
我的Java代码:
if(Ressource.includes("Gold") === true )
{
alert('Gold is in my arrray');
}
所以Ressource是我的数组,这个数组包含:
资源[“ Gold 780”,“ Platin 500”] //我打印了它以检查它是否为真
我不明白为什么我的测试if(Ressource.includes("Gold") === true
无法正常工作。
最诚挚的问候,我希望有人知道这是怎么回事。
答案 0 :(得分:2)
includes
array method检查字符串"Gold"
是否作为数组中的项包含,而不检查数组项之一是否包含子字符串。您想为此使用some
和includes
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。试试这个吧。