Це проста проблема, і я це робив раніше. Я просто не пам'ятаю, як, або як саме це називалося.
У 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
щоб запобігти забрудненню змінних глобальної сфери.
var
s для кожної області за один раз, а не мати дві окремі var
декларації.
CoffeeScript має: http://jashkenas.github.com/coffee-script/#pattern_matching
І, цитується вгорі сторінки:
"CoffeeScript - це невелика мова, яка збирається в JavaScript. Подумайте про це як менш показового брата-немовляти JavaScript - ті самі гени, приблизно однаковий зріст, але різний сенс стилю. Крім кількох бонусних приємностей, заяви в CoffeeScript відповідають одній -для одного з їхнім еквівалентом у JavaScript, це просто інший спосіб сказати це ".