J'ai un éventail d'éléments à l'aide de JavaScript ou JQuery, je souhaite trouver l'index de l'élément qui commence Je suppose que cela peut être fait sans la nécessité de itérus de la matrice et effectuez Merci pour toute aide. P> P> "sortOrdon =" code>. Je ne connaîtrai pas la chaîne complète de cet élément lors de la compilation, juste le "sortOrdon =" code> partie. P> item.match ("sortOrder =") code>, mais peut-être que je me trompe. p>
5 Réponses :
Si vous souhaitez trouver un article dans un tableau, vous devrez y introduire dessus. Si votre tableau est dans un ordre connu (par exemple: il est trié alphabétiquement), il y a quelques gains d'efficacité que vous pouvez construire dans l'algorithme de recherche (par exemple: la recherche d'arbres binaires), cependant, à moins que vous ne disposiez de milliers d'articles dans le tableau, il n'est guère va en valoir la peine. Dans votre cas, il suffit de boucler sur le tableau en vérifiant chaque article contre votre regex et de retourner lorsque vous trouvez une correspondance. P>
Oui, vous avez tort - vous devez itérer. Dans ES5, il y a une nouvelle méthode pour trouver des positions de tableau - array.indexof code> mais il n'y a pas de support pour cela dans les navigateurs plus anciens et il a besoin d'une correspondance exacte non partielle. P>
Ah ok oui, j'ai vu array.indexof code> et je me suis demandé s'il y avait quelque chose de similaire mais avec un match partiel. Honte qu'il n'y soit pas.
Malheureusement, il n'y a pas de match partiel dans l'indexof ... Essayez cela et voyez s'il aide:
Array.prototype.MatchInArray = function (value) {
  var i;
  for (i=0; i < this.length; i++) {
    if (this[i].match(value)) {
      return i;
    }
  }
  return -1;
};
envisagez de renvoyer l'index ( i code>) ou -1 code> (si non trouvé), puisque cela fournit un peu plus d'informations et est à égalité avec array.indexof Code>
Terminé. Merci @zamnuts !.
nouveau Fonction Array.findindex de l'ES6 permet de faire ce que vous voulez, utilisez regex et non itérer sur une matrice.
Vous avez un échantillon de la façon dont il peut être fait: https://jsbin.com/qemeseyeme/edit?js,console p>
Code complet Échantillon: p>
const arr = ["page=4", "sortOrder=asc", "datePosted=all-time"];
const str = "sortOrder";
function isStringInArray(str, arr) {
if (arr.findIndex(_strCheck) === -1) return false;
return true;
function _strCheck(el) {
return el.match(str);
}
}
console.log(isStringInArray(str, arr));
Si vous voulez obtenir la valeur ... pour obtenir la valeur const array = ["page=4", "sortOrder=asc", "datePosted=all-time", "sortOrder=desc"];
const index = array.findIndex(value => /^sortOrder=/.test(value));
// index = 1;
Vous devez faire une itération sur le tableau à un moment donné. Que ce soit résumé par un cadre ou non, il doit encore arriver.