Javascript équivalent de PHP list()
Aime vraiment cette fonction.
$matches = array('12', 'watt');
list($value, $unit) = $matches;
Est-il un Javascript équivalent de qui?
- Quel est le problème avec une approche standard
var value = matches[0]; var unit = matches[1];
- Eh bien, ce n'est pas très concis, est-il?
- Je n'ai jamais senti
list()
pour être utile et le juste au-dessus de hurle objet pour moivar power = { 'unit': 'watt', 'amount': 12 }
- C'est très laid et long. Je pense que la liste() rend le code plus lisible.
- Pas beaucoup de fonctions renvoie des objets, comme ".match()
- J'avais tout de même créer une ValueObject hors de la matrice, mais n'hésitez pas à faire autrement 🙂
- liste(de puissance.unité de puissance.le montant) = weirdStringToParse.match(massiveRegEx)
- var getPowerFromWeirdString = function(weirdString) {var puissance = weirdString.match(massiveRegEx); return {"unité": puissance[0], "montant": puissance[1] }; };
- Haha Gordon, vous pouvez envelopper ma solution dans une fonction aussi 🙂
- l'ajout de dépendances externes n'est jamais plus coincise.
- Voici une autre façon de réaliser ceci: stackoverflow.com/a/9853132/675007
- PHP
list()
est pratique si vous voulez échanger les valeurs de la variable, sans la nécessité d'une variable temporaire:list($b, $a) = array($a, $b);
InformationsquelleAutor Znarkus | 2009-12-23
Vous devez vous connecter pour publier un commentaire.
Il y a, dans les "nouveaux" versions de Javascript: Déstructuration de cession Javascript 1.7. C'est probablement uniquement pris en charge dans les navigateurs basés sur Mozilla, et peut-être dans Rhino.
EDIT:
en fait, il ne m'étonne pas si le V8 de la bibliothèque Javascript (et donc Chrome) prend en charge cette. Mais ne comptez pas sur qu'il soitMaintenant pris en charge dans tous les navigateurs modernes(sauf IE, bien sûr).
essayez ceci:
ES6 prend en charge cette maintenant directement via tableau déstructuration.
C'est ma solution pour l'utilisation de la Liste/Exploser sur le Javascript.
Violon Exemple De Travail
D'abord la mise en œuvre :
Il permet également la détermination de la portée de la nouvelle variables générées :
Cela a été réalisé en modifiant la Matrice de prototype.
window
comme un objet par défaut est une très mauvaise idée.Il y a une mise en œuvre expérimentale de
list()
par PHPJS ici:https://github.com/kvz/phpjs/blob/master/_experimental/array/list.js
CoffeeScript offre déstructuration de cession avec la syntaxe suivante:
C'est à peu près identique à la fonction offerte en très de nouvelles versions de JavaScript. Cependant, CoffeeScript produit compilé JS qui est compatible même avec IE6 du moteur JavaScript, et donc c'est une bonne option si la compatibilité est vital.
Puisque la plupart des implémentations de JavaScript n'est pas encore en charge cette fonctionnalité, vous pouvez simplement le faire en JavaScript-comme la mode:
Exemple:
Vérifier le violon
Une alternative consiste à ajouter à une liste de méthode à la Matrice.prototype (même moi, je ne le recommande pas):
Exemple:
Vérifier le violon pour que l'on
C'est mon hack à elle; aussi court que je pouvais le faire sans écrire une fonction pour le faire. Je dois être attentif à la portée de la "ce" si:
Assez bon pour un rire. J'ai toujours attribuer à chaque variable de l'un à l'autre:
C'est beaucoup plus courte de cette façon. D'ailleurs, si vous avez un tas de variables, ils devraient probablement être conservés dans le tableau, ou même mieux, ils doivent être les propriétés de fermeture, au lieu de déclarer tous séparément.
Exemple: