Je voudrais faire une fonction comme ce travail comme prévu dans JavaScript:
let arr = [0, 1, 0]; arr.forEach((elem) => { if (isLastElem(arr, elem)) { console.log("Found the last element!"); } });
4 Réponses :
Vous pouvez peut-être ne pas stocker le numéro natif, mais une instance de numéro ..
EG. P>
p>
function isLastElem(array, elem) { if (elem === array[array.length-1]) { return true; } else { return false; } } let arr = [new Number(0), new Number(1), new Number(2)]; console.log(isLastElem(arr, 2)); // I would expect false to be returned console.log(isLastElem(arr, arr[2])); // I would expect true to be returned
Ouais, ce serait une solution, mais en utilisant nouveau numéro code> est en général une très mauvaise pratique.
Je crains que ce soit tout à fait impossible dans mon projet actuel :( Merci pour la réponse cependant.
@Bergi ouais, pas quelque chose que je ferais personnellement. Mais ne répondait que de la question de l'OP. Spécifiquement -> n'importe quel moyen de résoudre ce problème et de passer des numéros par référence? Code>
Vous pouvez le faire en enveloppant votre numéro dans un tableau ou un objet, comme celui-ci:
let arr = [[0], [1], [2]]; console.log(isLastElem(arr, [2])); // returns false console.log(isLastElem(arr, arr[2])); // returns true
Vous pouvez essayer ce code
Qu'est-ce que cela a à voir avec la question?
@Pointy pour vérifier l'index de la matrice => par exemple Isprimitive (Index + 1)
Même si je me lance d'imaginer pourquoi quiconque aurait-il besoin de le faire, je pense que nous pourrions faire ce travail avec Chaque valeur de symbole renvoyée du symbole () est unique. Une valeur de symbole peut être utilisée comme identifiant pour les propriétés d'objet; Ceci est le seul but du type de données. P>
blockQuote> Cela signifie que nous pouvons utiliser Par conséquent, pour identifier le dernier élément d'un tableau, vous réellement em> besoin de la référence à cet élément: p> P>
symbole code>:
symbole code> pour tamponner chaque élément d'un tableau. Comme vous pouvez le voir, un tableau de
1 code> S peut être converti en un tableau de symboles de
1 code> qui sont tous em> uniques: p> xxx pré>
const obj = (k, v) => (
{ [k]: v
, get: () => v
, equals: o => o[k] === v
});
const stamp = (arr, secret = Date.now()) =>
arr.map((x, i) => obj(`${secret}@@${i}`, x));
const arr = stamp([1, 1, 1]);
arr.forEach((x, _, xs) => {
console.log(x.get(), x.equals(xs[xs.length - 1]));
});
Mais ... 2 est en fait
=== code> à 2. Toutes les valeurs de numéro 2 sont indiscernables.
Vous devriez comparer l'entrée de l'espace mémoire, qui n'est pas possible dans JavaScript.
Et même pour les objets, votre code n'a de sens que si vous passez la valeur de l'élément de tableau réelle. Puisque vous devez connaître un index pour faire cela, il serait beaucoup plus simple de comparer l'index à la longueur de la matrice.
Si vous souhaitez transmettre une "référence à un élément de tableau", passez la matrice et l'index à la place. Dans ce cas, coïncidemment
arr code> et
2 code>. (Cela ferait un meilleur exemple à discuter si les éléments de la matrice n'étaient pas égaux aux indices).
Donc, basé sur la réponse de Rager, ce que j'essaie de faire est plutôt impossible. Bummer, mais merci de toute façon!