Jquery — inArray — Проверяет, существует значение или нет после сравнения

#jquery

#jquery

Вопрос:

inArray проверит, существует точное значение или нет?

из URL получаем linkTrim = offer3for2

из-за разделения файлов cookie, offerSplit = ?url1=/offers/offer3for2

Необходимо сравнить и проверить, существует ли offer3for2 текст в обоих linkTrim amp; offerSplit или нет.

Путь:

 https://www.test.com/content/test/en/offers/offer3for2.html
  

cookie — параметр предложения

 ?url1=/offers/offer3for2&url2=/offers/test&url3=/offers/advance-purchase
  

JS:

 var linkPath  = window.location.pathname;
var linkSplit = linkPath.replace(/.w $/, '').split('/');
var linkTrim  = linkSplit.slice(-1).join('/');
console.log('Link name: ', linkTrim);

let offerParameter = $.cookie('offerParameter');
let offerSplit = offerParameter.split('amp;');

if($.inArray(linkTrim, offerSplit)){
  console.log("Name Exists");
} else { 
  console.log("Name Not Exists");
}
  

Комментарии:

1. $.inArray ищет точное совпадение, а не подстроку. offer3for2 не совпадает с ?url1=/offers/offer3for2

2. @Barmar Спасибо за ваш ответ .. есть ли какой-либо способ объединить или нарезать массив в соответствии с именем пути?

Ответ №1:

Вы ищете точное совпадение, но хотите выполнить поиск по подстроке. Вы можете использовать .includes() метод, чтобы проверить, содержит ли строка подстроку. Используйте .any() для поиска в массиве элемента, соответствующего произвольному тесту.

 var linkTrim = "offer3for2";
var offerSplit = ["?url1=/offers/offer3for2"];

if (offerSplit.some(s => s.includes(linkTrim))) {
  console.log("Name exists");
} else {
  console.log("Name Not Exists");
}