Diziyi JavaScript'te ayrı değişkenlere açma


141

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:


173

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'

5
yıkıcı atama bugün itibariyle
grandrew

20

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.


Görünüşe göre ES4'ün değil, ES6'nın (2015) bir parçası mı? ecma-international.org/ecma-262/6.0/…
jab

@jab: teşekkürler! Bazen bu eski cevaplar unutulur ve modası geçmiş olur, ancak Mathias bu cevabı zaten ekledi gibi görünüyor :)
Andy E


6

Bir dizi öğesinin işlev bağımsız değişkeni olarak iletilmesini istiyorsanız dizinin uygula işlevini kullanabilirsiniz.


4
Bir JavaScript'in Arraybir .apply()işlevi olduğundan emin değilim . Sanırım demek istedin some_function.apply(this, my_array). Bu cevaba
Kit


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

1
varDeğişkenlerin küresel kapsamı kirletmesini önlemek için gerçekten kullanmalısınız .
Mathias Bynens

Ben sadece onun tüm açıklanan değişkenleri varsayıyorum :)
rob waminal

Muhtemelen variki ayrı vardeklarasyondan ziyade, her bir kapsam için her şeyi tek seferde beyan etmek daha iyi bir fikirdir .
Mathias Bynens

2

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. "


1
Bu soruya cevap vermiyor. CoffeeScript'in bazı düzgün şeyleri olduğunu takdir ediyorum, ancak soru Javascript ile ilgili.
Hovis Biddle

Ölü bağlantı: ((((
Paul Draper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.