Я хотел бы проверить, существует ли строка в моем массиве.
Мой Javascript код:
if(Ressource.includes("Gold") === true )
{
alert('Gold is in my arrray');
}
Итак, Ressource - это мой массив, и этот массив содержит:
Ressource ["Gold 780", "Platin 500"]//Я напечатал его, чтобы проверить, действительно ли это правда
Я не понимаю, почему мой тест, if(Ressource.includes("Gold") === true
не работает.
С наилучшими пожеланиями, я надеюсь, что кто-то знает, что с этим не так.
Метод array includes
проверяет, includes
ли строка "Gold"
в качестве элемента в массиве, а не содержит ли один из элементов массива подстроку. Вы хотели бы использовать some
с includes
в includes
метод строки для этого:
Ressources.some(res => res.includes("Gold"))
Gold
? Это будет Array#find
вместо Array#some
.
Вы должны пройти через массив до тех пор, пока не выясните, существует ли ваше значение.
if (Ressource.some(x => x.includes("Gold") === true)) {
alert('Gold is in my arrray');
}
Ваша проблема в том, что у вас есть номер вместе с 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 имеют отличное руководство для регулярных выражений. Попробуйте это вместо этого.
Другим подходом было бы использование Array.prototype.find()
и простого RegExp
. Это вернет значение элемента, содержащего поисковый запрос. Как сказано в большинстве ответов, Array.prototype.includes()
работает, если ваш поисковый Array.prototype.includes()
точно совпадает с элементом массива Gold 780
.
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');
}
Рабочий скрипт