Bu basit bir problem ve daha önce de yaptım. Nasıl ya da tam olarak ne denildiğini hatırlayamıyorum.
Python bunu yapabilirim:
arr = ['one', 'two']
one, two = arr
bunu JavaScript’te nasıl yapabilirim?
Bu basit bir problem ve daha önce de yaptım. Nasıl ya da tam olarak ne denildiğini hatırlayamıyorum.
Python bunu yapabilirim:
arr = ['one', 'two']
one, two = arr
bunu JavaScript’te nasıl yapabilirim?
Yanıtlar:
Bu, şu anda tarayıcılar arası uyumlu tek AFAIK çözümüdür:
var one = arr[0],
two = arr[1];
ES6 yıkım atamasına izin verecektir:
let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'
Veya ilk örneğinize sadık kalmak için:
var arr = ['one', 'two'];
var [one, two] = arr;
Varsayılan bir değer de oluşturabilirsiniz:
const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'
Bu yıkıcı ödev . Aşağıdaki sözdizimiyle bazı tarayıcılarda yapabilirsiniz:
[one, two] = arr;
Babel ve Traceur gibi en yeni tarayıcılarda ve transpillerde desteklenir . Bu, ECMAScript 4 ile sunulan ve daha sonra ES 2015 olarak ECMAScript Harmony haline gelen bir özellikti.
Soru oldukça eski ama bu alternatif (2016) çözümü yayınlamaktan hoşlanıyorum: Forma operatörü "..." de kullanılabilir .
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);
Ciddi fikrin uygulanması.
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];
varDeğişkenlerin küresel kapsamı kirletmesini önlemek için gerçekten kullanmalısınız .
variki ayrı vardeklarasyondan ziyade, her bir kapsam için her şeyi tek seferde beyan etmek daha iyi bir fikirdir .
CoffeeScript buna sahiptir: http://jashkenas.github.com/coffee-script/#pattern_matching
Ve sayfanın üst kısmından alıntı:
"CoffeeScript, JavaScript'e derleyen küçük bir dildir. JavaScript'in daha az gösterişli çocuk kardeşi olarak düşünün - aynı genler, kabaca aynı yükseklik, ancak farklı bir stil duygusu. Bir avuç bonus hediyenin yanı sıra, CoffeeScript'teki ifadeler bir JavaScript'te eşdeğerleriyle bire bir, bunu söylemenin başka bir yolu. "