Il y a une question similaire pour LINQ: existe-t-il un équivalent de None() dans LINQ?
Il existe des méthodes booléennes sur les collections / tableaux:
Array.some (similaire à linq.Any )Array.every (similaire à linq.All )Puis-je vérifier si aucun élément du tableau ne correspond à un rappel de fonction donné
Une solution de contournement possible consiste à .filter , puis à vérifier .length et à s'assurer qu'il est égal à zéro:
let arr = ["a","b","c"] // make sure that no item in array = "b" let noBs = arr.filter(el => el === "b").length === 0
3 Réponses :
Comme le conclut logiquement l'exemple linq
Nonen'est identique à!Any, vous pouvez donc définir votre propre méthode d'extension comme suit:
let arr = ["a","b","c"] let noBs = arr.none(el => el === "b")
Et puis appelez comme ceci:
Object.defineProperty(Array.prototype, 'none', {
value: function (callback) { return !this.some(callback) }
});
Ou si vous souhaitez étendre Array.proto comme ceci:
let arr = ["a","b","c"] let noBs = none(arr, el => el === "b")
Puis appelez comme ceci:
let none = (arr, callback) => !arr.some(callback)
J'ai aimé l'approche @KyledMit. Dans le même ordre d'idées, utiliser findIndex est un autre moyen. (la find peut ne pas être fiable car nous ne pouvons pas vérifier la valeur de retour).
const arr = ["a","b","c"] const noBs = arr.findIndex(el => el === "b") < 0; console.log(noBs)
Pas pour le moment
En ce moment, j'utilise un Array.some() et je Array.some() le tout
Personnellement, je pense qu'une fonction Array.none serait géniale
Vous pouvez demander qu'il soit ajouté à la prochaine version d'ECMA. Cela ressemble un peu à un processus pour dire le moins, mais si nous voulions ajouter cela à l'ECMA, ce serait la voie.
Attention: not every n'est pas pareil à none !
oh oui je pense que je voulais dire! Array.any Merci d'avoir souligné cela, mettra à jour ma réponse
Je pense que vous voulez dire Array.some (à ma connaissance, il n'y a pas any alias dans JS).