2010-08-06 18 views

Respuesta

95

Esta es actualmente la única solución compatible con multi-navegador que yo sepa:

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 seguir con su ejemplo inicial :

var arr = ['one', 'two']; 
var [one, two] = arr; 

También podría crear un valor por defecto:

const [one = 'one', two = 'two', three = 'three'] = [1, 2]; 
console.log(one); // 1 
console.log(two); // 2 
console.log(three // 'three' 
+0

tarea de desestructuración tiene soporte completo a partir de hoy http://kangax.github.io/compat-table/es6/#test-destructuring – grandrew

10

Eso es destructuring assignment. Puede hacerlo en algunos navegadores con la siguiente sintaxis:

[one, two] = arr; 

Se admite en algunos de los navegadores más recientes y transpilers como Babel y Traceur. Esta fue una característica introducida con ECMAScript 4 que más tarde se convirtió en ECMAScript Armonía, que finalmente se convirtió ES 2015.

+0

parece que es parte de ES6 (2015), no ES4? http://www.ecma-international.org/ecma-262/6.0/#sec-destructuring-assignment – jab

+0

@jab: ¡gracias!a veces estas viejas respuestas se olvidan y se vuelven obsoletas, aunque parece que Mathias ya agregó esa información a su respuesta :) –

2
var one = arr[0]; 
var two = arr[1]; 
+1

Deberías usar 'var' para evitar que las variables contaminen el alcance global. –

+0

Supongo que son todas las variables declaradas :) –

+0

Probablemente sea una mejor idea declarar todas las 'var' s para cada ámbito de una sola vez en lugar de tener dos declaraciones' var' separadas. –

3

CoffeeScript lo tiene: http://jashkenas.github.com/coffee-script/#pattern_matching

Y, citado de la parte superior de la página:

"CoffeeScript es una poco lenguaje que compila en JavaScript. Piense en ello como el hermano pequeño menos ostentoso de JavaScript: los mismos genes, más o menos de la misma altura, pero con un sentido del estilo diferente. Además de un puñado de objetos extra, las declaraciones en CoffeeScript corresponden uno a uno con su equivalente en JavaScript, es solo otra forma de decirlo. "

+1

Esto no responde la pregunta. Aprecio que CoffeeScript tenga algunas cosas buenas, pero la pregunta es sobre Javascript. – Hovis

+0

Enlace muerto: (((( –

6

Puede usar la función aplicar de la matriz si desea que los elementos de una matriz sean pasa como argumentos de la función

+4

) No estoy seguro de que JavaScript 'Array' tenga una función' .apply() '. Creo que quiso decir' some_function.apply (this, my_array) '. Vea esto [respuesta] (http://stackoverflow.com/questions/7077651/python-like-unpacking-in-javascript/7077758#7077758) – Kit