Подтвердить что ты не робот

Распаковка массива на отдельные переменные в JavaScript

Это простая проблема, и я сделал это раньше. Я просто не могу вспомнить, как, или что именно это называлось.

В python я могу это сделать:

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

как это сделать в JavaScript?

4b9b3361

Ответ 1

В настоящее время это единственное совместимое с кросс-браузером решение AFAIK:

var one = arr[0],
    two = arr[1];

ES6 разрешает назначение деструктуризации:

let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'

Или, чтобы придерживаться вашего первоначального примера:

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

Вы также можете создать значение по умолчанию:

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

Ответ 2

Это назначение деструкции. Вы можете сделать это в некоторых браузерах со следующим синтаксисом:

[one, two] = arr;

Он поддерживается в некоторых из последних браузеров и транспилеров, таких как Babel и Traceur. Это была функция, введенная с ECMAScript 4, которая позже стала ECMAScript Harmony, которая в конечном итоге стала ES 2015.

Ответ 3

Вы можете использовать функцию применения массива, если хотите, чтобы элементы массива передавались как аргументы функции.

Ответ 4

В CoffeeScript есть: http://jashkenas.github.com/coffee-script/#pattern_matching

И, процитированный в верхней части страницы:

"CoffeeScript - это маленький язык, который компилируется в JavaScript. Подумайте об этом как о менее скромном детском брате с JavaScript - о тех же генах, примерно одинаковой высоты, но о другом стиле. Помимо горстки бонусов, заявления в CoffeeScript соответствуют друг другу с их эквивалентом в JavaScript, это просто еще один способ сказать это."

Ответ 5

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

Ответ 6

Реализация серьезной идеи.

http://jsfiddle.net/RichAyotte/6D2wP/

(function(a, b, c, d) {
    console.log(a, b, c, d);   
}.apply(this, ['a', 'b', 'c', 'd']));