Este é um problema simples, e eu já fiz isso antes. Só não consigo lembrar como, ou como exatamente foi chamado.
Em python eu posso fazer isso:
arr = ['one', 'two']
one, two = arr
como faço isso em JavaScript?
Este é um problema simples, e eu já fiz isso antes. Só não consigo lembrar como, ou como exatamente foi chamado.
Em python eu posso fazer isso:
arr = ['one', 'two']
one, two = arr
como faço isso em JavaScript?
Respostas:
Atualmente, é a única solução compatível com vários navegadores AFAIK:
var one = arr[0],
two = arr[1];
O ES6 permitirá a atribuição de desestruturação:
let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'
Ou, para manter o seu exemplo inicial:
var arr = ['one', 'two'];
var [one, two] = arr;
Você também pode criar um valor padrão:
const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'
Essa é uma tarefa de desestruturação . Você pode fazer isso em alguns navegadores com a seguinte sintaxe:
[one, two] = arr;
É suportado em alguns dos mais recentes navegadores e transpilers como Babel e Traceur . Esse foi um recurso introduzido no ECMAScript 4, que mais tarde se tornou o ECMAScript Harmony, que acabou se tornando o ES 2015.
A questão é bastante antiga, mas eu gosto de postar esta solução alternativa (2016): Também é possível usar o operador de propagação "...".
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);
Implementação da idéia séria.
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 impedir que as variáveis poluam o escopo global.
var
s para cada escopo de uma só vez, em vez de ter duas var
declarações separadas .
O CoffeeScript possui: http://jashkenas.github.com/coffee-script/#pattern_matching
E, citado no topo da página:
"O CoffeeScript é uma pequena linguagem que se compila no JavaScript. Pense nele como o irmão mais ostentoso do JavaScript - os mesmos genes, aproximadamente a mesma altura, mas um senso de estilo diferente. Além de um punhado de guloseimas, as declarações no CoffeeScript correspondem a -para um com seu equivalente em JavaScript, é apenas outra maneira de dizê-lo. "