2015-11-23 20 views
12

Aşağıdaki ES6 kod pasajı geçersiz. Eskiden geçerliydi. Onu hala eski Traceur versiyonlarında çalıştırabilirim, ama en son Babil ve Traceur artık bir dizide for-loop'u sevmiyor. Bana artık neden geçerli olmadığını söyleyen var. AşağıdaES6 Array kavrayışları artık geçerli değil mi?

let people = [ 
    { 
     "firstName": "Belinda", 
     "phone": "1-607-194-5530", 
     "email": "[email protected]" 
    }, 
    { 
     "firstName": "Elizabeth", 
     "phone": "1-155-446-1624", 
     "email": "[email protected]" 
    } 
] 

let phones = [for({phone} of people) phone]; 
console.log(phones) 

pasajı bir for döngüsü Tamam içeride yüzden artık geçerli neden

for(let {phone} of people) { 
    console.log(phone) 
} 
+3

(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions), bu ES6 indi asla deneysel öneri var/Alternatif olarak ES2015 –

cevap

18

Dizi comprehensions removed in BabelJS version 6 idi. ES2015 Specification'un anlamalarından hiç bahsetmediği için muhtemelen düştü. ES Tartışma posta listesi arşivleri arasında hızlı bir arama, kesin olan herhangi bir şeyde boş bırakıldı.

Biraz daha ayrıntılı bir alternatif olarak Object.entries (ES7'de stage-3 özelliği) ve Array.prototype.map vardır.

let emails = people.map(({ email }) => email); 
+4

: 'Array.from (insanlar, ({E}) => e-posta); 'bir iterable ile çalışacak. – loganfsmyth

+3

Neden 'Object.entries'? 'Halkındaki basit' people.map (_ => _.email) ' – Bergi

+1

Teşekkür @bergi istiyorum, bir dizidir. Gerçekten söyleyemem. Nedense benim yorgun gözler insanlara bir nesne yaptı. Snippet'i güncelledim. matematiksel anlamda Seti inşaatçılar Python inanılmaz bir özelliği olarak comprehensions –

7

kimse bana söyleyebilir imha biliyorum geçerli ES6 olduğunu.

Dizi anlama ES6 son sürümüne dahil edilmeden vermedi ve o da bir sonraki sürümü için dikkate alınması gereken görünmüyor: https://github.com/tc39/ecma262

9

http://exploringjs.com/es6/ch_faq.html#_does-es6-have-array-comprehensions faydalıdır:

Başlangıçta, ES6 (benzer Haskell ve Python için) Array ve Jeneratör comprehensions sahip olmaktı.

  • keyfi türünden (Microsoft'un LINQ düşünmek) için çalışabilir comprehensions oluşturmak mümkün olabilir: TC39 iki yollar keşfetmek istedim çünkü Ama, ES6 sonrasına kadar ertelendi.
  • Ayrıca yineleyiciler için yöntemleri yapmak comprehensions şeyi elde etmek için daha iyi bir yol olduğunu mümkün olabilir.
  • bir [dizi anlama] var
+3

- Matematiksel sözdizimi piton yıllardan oldukça yakın, yani ... olanlar için piton aynı sözdizimi kullanılarak bu kadar kötü ne olurdu Bu gelişmiştir ve sayısız test edilmiştir projesi. böyle güçlü bir aracı zaten çalışır halde neden tekerleği yeniden icat ... –

İlgili konular