Это простая проблема, и я уже делал это раньше. Я просто не могу вспомнить, как и как именно это называлось.
В python я могу сделать это:
arr = ['one', 'two']
one, two = arr
как мне это сделать в JavaScript?
Это простая проблема, и я уже делал это раньше. Я просто не могу вспомнить, как и как именно это называлось.
В python я могу сделать это:
arr = ['one', 'two']
one, two = arr
как мне это сделать в JavaScript?
Ответы:
В настоящее время это единственное кросс-браузерное решение 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'
Это деструктурирующее задание . Вы можете сделать это в некоторых браузерах со следующим синтаксисом:
[one, two] = arr;
Он поддерживается некоторыми последними браузерами и транспиляторами, такими как Babel и Traceur . Это была функция, представленная в ECMAScript 4, который позже стал ECMAScript Harmony, который в конечном итоге стал ES 2015.
Вопрос довольно старый, но мне нравится публиковать это альтернативное (2016 г.) решение: можно также использовать оператор распространения «...».
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);
Реализация серьезной задумки.
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чтобы переменные не загрязняли глобальную область видимости.
vars для каждой области за один раз, чем иметь два отдельных varобъявления.
В CoffeeScript он есть: http://jashkenas.github.com/coffee-script/#pattern_matching
И, цитируется вверху страницы:
«CoffeeScript - это небольшой язык, который компилируется в JavaScript. Думайте о нем как о менее показном младшем брате JavaScript - те же гены, примерно такой же рост, но другое чувство стиля. Помимо нескольких бонусных вкусностей, утверждения в CoffeeScript соответствуют одному -to-one с их эквивалентом в JavaScript, это просто другой способ сказать это ".