C'est un problème simple, et je l'ai déjà fait. Je ne me souviens tout simplement pas comment ou comment cela s'appelait exactement.
En python, je peux faire ceci:
arr = ['one', 'two']
one, two = arr
comment faire cela en JavaScript?
C'est un problème simple, et je l'ai déjà fait. Je ne me souviens tout simplement pas comment ou comment cela s'appelait exactement.
En python, je peux faire ceci:
arr = ['one', 'two']
one, two = arr
comment faire cela en JavaScript?
Réponses:
C'est actuellement la seule solution AFAIK compatible cross-browser:
var one = arr[0],
two = arr[1];
ES6 permettra l'affectation de déstructuration:
let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'
Ou, pour vous en tenir à votre exemple initial:
var arr = ['one', 'two'];
var [one, two] = arr;
Vous pouvez également créer une valeur par défaut:
const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'
C'est une mission destructrice . Vous pouvez le faire dans certains navigateurs avec la syntaxe suivante:
[one, two] = arr;
Il est pris en charge dans certains des derniers navigateurs et transpileurs tels que Babel et Traceur . Il s'agissait d'une fonctionnalité introduite avec ECMAScript 4 qui est devenu plus tard ECMAScript Harmony, qui est finalement devenu ES 2015.
La question est assez ancienne mais j'aime poster cette solution alternative (2016): On peut aussi utiliser l' opérateur de diffusion "...".
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator
let xAndY = [42, 1337];
let f = function(x, y) { return x + y; };
f(...xAndY);
Vous pouvez utiliser la fonction apply du tableau si vous souhaitez qu'un élément du tableau soit passé en tant qu'arguments de fonction.
Mise en œuvre de l'idée sérieuse.
http://jsfiddle.net/RichAyotte/6D2wP/
(function(a, b, c, d) {
console.log(a, b, c, d);
}.apply(this, ['a', 'b', 'c', 'd']));
var one = arr[0];
var two = arr[1];
var
pour empêcher les variables de polluer la portée globale.
var
s pour chaque portée en une seule fois plutôt que d'avoir deux var
déclarations distinctes .
CoffeeScript l'a: http://jashkenas.github.com/coffee-script/#pattern_matching
Et, cité en haut de la page:
"CoffeeScript est un petit langage qui se compile en JavaScript. Considérez-le comme le petit frère de JavaScript le moins ostentatoire - les mêmes gènes, à peu près la même hauteur, mais un sens du style différent. Mis à part une poignée de bonus bonus, les déclarations de CoffeeScript correspondent à une -to-one avec leur équivalent en JavaScript, c'est juste une autre façon de le dire. "