Проверьте, существует ли подстрока в массиве Javascript

1

Я хотел бы проверить, существует ли строка в моем массиве.

Мой Javascript код:

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

Итак, Ressource - это мой массив, и этот массив содержит:

Ressource ["Gold 780", "Platin 500"]//Я напечатал его, чтобы проверить, действительно ли это правда

Я не понимаю, почему мой тест, if(Ressource.includes("Gold") === true не работает.

С наилучшими пожеланиями, я надеюсь, что кто-то знает, что с этим не так.

  • 4
    включает в себя матчи всю строку, а не ее часть
  • 0
    привет @ Adriani6 я уже попробовал это, и это не работает.
Показать ещё 2 комментария
Теги:

4 ответа

3
Лучший ответ

Метод array includes проверяет, includes ли строка "Gold" в качестве элемента в массиве, а не содержит ли один из элементов массива подстроку. Вы хотели бы использовать some с includes в includes метод строки для этого:

Ressources.some(res => res.includes("Gold"))
  • 0
    @DorianGrn ты имеешь в виду найти строку, содержащую Gold ? Это будет Array#find вместо Array#some .
  • 0
    @Bergi С вашим кодом, как я могу отобразить все содержимое коробки моей таблицы, которая содержит слово золото.
Показать ещё 3 комментария
1

Вы должны пройти через массив до тех пор, пока не выясните, существует ли ваше значение.

if (Ressource.some(x => x.includes("Gold") === true)) {
    alert('Gold is in my arrray');
}
  • 0
    С вашим кодом, как я могу отобразить все содержимое коробки моей таблицы, которая содержит слово золото
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 имеют отличное руководство для регулярных выражений. Попробуйте это вместо этого.

0

Другим подходом было бы использование 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');
}

Рабочий скрипт

Ещё вопросы

Сообщество Overcoder
Наверх
Меню