Este es un problema simple, y lo he hecho antes. Simplemente no puedo recordar cómo o cómo se llamaba exactamente.
En python puedo hacer esto:
arr = ['one', 'two']
one, two = arr
¿Cómo hago eso en JavaScript?
Este es un problema simple, y lo he hecho antes. Simplemente no puedo recordar cómo o cómo se llamaba exactamente.
En python puedo hacer esto:
arr = ['one', 'two']
one, two = arr
¿Cómo hago eso en JavaScript?
Respuestas:
Esta es actualmente la única solución compatible con varios navegadores AFAIK:
var one = arr[0],
two = arr[1];
ES6 permitirá la asignación de desestructuración:
let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'
O, para apegarse a su ejemplo inicial:
var arr = ['one', 'two'];
var [one, two] = arr;
También puede crear un valor predeterminado:
const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'
Esa es una tarea desestructuradora . Puede hacerlo en algunos navegadores con la siguiente sintaxis:
[one, two] = arr;
Es compatible con algunos de los últimos navegadores y transpiladores como Babel y Traceur . Esta fue una característica introducida con ECMAScript 4 que más tarde se convirtió en ECMAScript Harmony, que finalmente se convirtió en ES 2015.
La pregunta es bastante antigua, pero me gusta publicar esta solución alternativa (2016): también se puede usar el operador de propagación "...".
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);
Implementación de la idea seria.
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
para evitar que las variables contaminen el alcance global.
var
s para cada alcance de una vez en lugar de tener dos var
declaraciones separadas .
CoffeeScript lo tiene: http://jashkenas.github.com/coffee-script/#pattern_matching
Y, citado desde la parte superior de la página:
"CoffeeScript es un pequeño lenguaje que se compila en JavaScript. Piense en él como el hermano menor menos ostentoso de JavaScript: los mismos genes, aproximadamente la misma altura, pero un sentido de estilo diferente. Además de un puñado de extras, las declaraciones en CoffeeScript corresponden a uno -to-uno con su equivalente en JavaScript, es solo otra forma de decirlo ".