D'accord, c'est donc quelque chose que j'ai partiellement travaillé (en ignorant la sensibilité à la casse) en comparant ce qui suit :

arrayA = ["apples", "Oranges", "salt", "Cracked Black Pepper"];
arrayB = ["salt", "pepper", "orange"]

Qui fonctionne "partiellement" avec les éléments suivants :

findAnyMatch(arrayA, arrayB): string[] {
    let returnArray = [];
    let conditionedArrayA = arrayA.map(i => i.toLowerCase().trim())
    for (let i = 0; i < arrayB.length; i++) {
      if (conditionedArrayA .includes(arrayB[i].toLowerCase().trim())) {
        ret.push(arrayB[i].toLowerCase().trim());
      }
    }
    return returnArray;
  }

Ce qui renvoie : "salt", "orange" tout à fait heureusement ; le problème étant qu'il ne peut pas voir "poivre" dans arrayA car il a "craqué noir" devant lui.

Comment puis-je le faire rechercher n'importe où à l'intérieur de chaque chaîne du arrayA conditionné?

Merci

3
Logan 14 mars 2019 à 20:13

1 réponse

Meilleure réponse

Vous pouvez utiliser le filtre et certains. avec regex

  • Le filtre est utilisé pour obtenir uniquement les valeurs souhaitées.
  • Certains sont utilisés pour vérifier si l'une des valeurs de arrayA correspond à l'élément actuel.
  • Regex est utilisé pour faire correspondre la chaîne. Le drapeau i est utilisé pour l'insensibilité à la casse.
let arrayA = ["apples", "Oranges", "salt", "Cracked Black Pepper"];
let arrayB = ["salt", "pepper", "orange"]

let find = (A,B) => {
  return B.filter(b=> A.some(a=> new RegExp(b,'i').test(a)))
}

console.log(find(arrayA,arrayB))
4
Code Maniac 14 mars 2019 à 17:29