Maison > Article > interface Web > Sujet JavaScript 9 : Recherche d'éléments spécifiés dans un tableau
Répertoire d'articles
(Recommandation d'apprentissage gratuite : tutoriel vidéo javascript)
1. findIndex et findLastIndex
La méthode findIndex() renvoie l'index du premier élément du tableau qui satisfait à la fonction de test fournie. Si l'élément correspondant n'est pas trouvé, -1 est renvoyé.
const array1 = [5, 12, 8, 130, 44];const isLargeNumber = (element) => element > 13;console.log(array1.findIndex(isLargeNumber));// expected output: 3
Implémentation
Array.prototype.newFindIndex = function(callback) { const _arr = this; const len = _arr.length; for (let i = 0; i element > 13;console.log(array1.newFindIndex(isLargeNumber));// 3
De même, lorsque nous regardons en arrière pour trouver la première méthode qui satisfait à la condition, nous pouvons écrire comme ceci :
Array.prototype.newFindlastIndex = function(callback) { const _arr = this; const len = _arr.length; for (let i = len - 1; i >= 0; i--) { if (callback(_arr[i], i, _arr)) { return i; } } return -1;};const array1 = [5, 12, 8, 130, 44];const isLargeNumber = (element) => element > 13;console.log(array1.newFindlastIndex(isLargeNumber));// 4
Le code ci-dessus est très similaire à la recherche avant, mais ne modifie que les conditions de parcours.
Comme vous pouvez le voir, à l'exception des conditions différentes de la boucle, les deux méthodes sont presque identiques En nous référant à lodash, nous allons simplifier les deux méthodes
/** * @private * @param {Array} array The array to inspect. * @param {Function} predicate The function invoked per iteration. * @param {boolean} [fromRight] 从右向左查找 * @returns {number} 返回第一个符合条件元素的下标或-1 */function baseFindIndex(array, predicate, fromRight) { const { length } = array; let index = fromRight ? length : -1; // 确定下标的边界 while (fromRight ? index-- : ++index Regardons son frère - <p> l'idée est d'utiliser les différents paramètres passés pour renvoyer différentes fonctions. <code>underscore</code></p><pre class="brush:php;toolbar:false">function createIndexFinder(dir) { return function(array, predicate, context) { const { length } = array; var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index À propos de <p> Nous avons terminé ~, jetons un coup d'œil aux nouvelles scènes et implémentations ! <code>findIndex</code></p><p><img src="https://img.php.cn/upload/article/000/000/052/c975230185fb614ade747b6d7f8688db-0.jpg" alt="Sujet JavaScript 9 : Recherche déléments spécifiés dans un tableau"></p><p>2. sortIndex<strong></strong></p> Trouvez la position correspondant à <p> dans un tableau trié, c'est-à-dire qu'il est garanti de être inséré dans le tableau Après cela, il conserve toujours un état ordonné. <code>value</code></p><pre class="brush:php;toolbar:false">const arr = [1, 3, 5];sortedIndex(arr, 0); // 0// 不需要插入arrAlors comment y parvenir ? 2.1 TraverséeTout le monde peut penser à la traversée, même si ce n'est pas forcément la solution optimale :
function sortIndex(array, value) { for (let i = 0; i value) { return i; } } return array.length;}2.2 Dichotomie
function sortIndex(array, value) { let low = 0, high = array.length; while (low
3. indexOf et lastIndexOf
indexOf()
first où un élément donné peut être trouvé dans le tableau, ou -1 s'il n'existe pas. Effectuez une recherche depuis l'avant du tableau vers l'arrière, en commençant par fromIndex.
lastIndexOf()
de l'élément spécifié dans le tableau, ou -1 s'il n'existe pas. Effectuez une recherche vers l'avant à partir de l'arrière du tableau, en commençant par fromIndex.
function indexOf(array, value) { for (let i = 0; i <h4>emmmm...Après avoir vu l'implémentation de findIndex et lastFindIndex, indexOf devrait également être propre et bien rangé~</h4><p> 3.2 IndexOf et lastIndexOf Version générale 1</p><h4>Créer différentes méthodes de recherche via des paramètres</h4><pre class="brush:php;toolbar:false">function createIndexOf(dir) { return function(array, value) { let index = dir > 0 ? 0 : arr.length - 1; for (; index >= 0 && index <p>3.3 IndexOf et lastIndexOf Version générale 2</p><h4>Cette fois, nous autorisons les recherches spécifiées Position, prenons un aperçu de la fonction de fromIndex : </h4><p></p>Définissez la position pour commencer la recherche. Si la valeur de l'index est supérieure ou égale à la longueur du tableau, cela signifie que la recherche ne sera pas effectuée dans le tableau et -1 sera renvoyé. <blockquote> Si la valeur d'index fournie dans le paramètre est une valeur négative, elle est utilisée comme décalage par rapport à la fin du tableau, c'est-à-dire que -1 signifie commencer la recherche à partir du dernier élément, -2 signifie commencer à partir du deuxième au dernier élément, et ainsi de suite par analogie. <p> Remarque : Si la valeur d'index fournie dans le paramètre est une valeur négative, le tableau sera toujours interrogé d'avant en arrière. Si la valeur de l'index de décalage est toujours inférieure à 0, l'ensemble du tableau sera interrogé. Sa valeur par défaut est 0. <br><br></p> <pre class="brush:php;toolbar:false">function createIndexOf(dir) { return function(array, value, fromIndex) { // 设定开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回 -1。 let length = array == null ? 0 : array.length; let i = 0; if (!length) return -1; if (fromIndex >= length) return -1; if (typeof fromIndex === "number") { if (dir > 0) { // 正序 // 起始点>=0,沿用起始点,否则起始点为从后向前数fromIndex i = fromIndex >= 0 ? fromIndex : Math.max(length + fromIndex, 0); } else { // 倒序 // 起始点>=0,沿用起始点,否则起始点为从后向前数fromIndex length = fromIndex >= 0 ? Math.min(fromIndex + 1, length) : fromIndex + length + 1; } } // 起始下标 for ( fromIndex = dir > 0 ? i : length - 1; fromIndex >= 0 && fromIndex C'est la fin de notre recherche d'éléments dans le tableau. Ce que nous avons implémenté est toujours très différent deou
. trois sections, Pour une meilleure mise en œuvre, assurez-vous d'écrire dans la zone de message ~loadsh
underscore
Recommandations d'apprentissage gratuites associées :javascript(Vidéo)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!