eşleşir:CoffeeScript: Dizi elemanı İki diziler var başka dizi
Ben dizi2 1 veya daha fazla dizi1 kelimesi varsa kontrol etmek istiyorumarray1 = ["hello","two","three"]
array2 = ["hello"]
.
Bunu Coffeescript kullanarak nasıl yapabilirim?
eşleşir:CoffeeScript: Dizi elemanı İki diziler var başka dizi
Ben dizi2 1 veya daha fazla dizi1 kelimesi varsa kontrol etmek istiyorumarray1 = ["hello","two","three"]
array2 = ["hello"]
.
Bunu Coffeescript kullanarak nasıl yapabilirim?
Bu CoffeeScript chapter'u kullanarak iki dizi arasındaki kesişimi denetlemenin bir yolunu bulun. CoffeeScript şuna oldukça güzel gözüküyor.
Öğelerin kesişiminden sonra ortaya çıkan dizi en az bir öğe içeriyorsa, her iki dizinin de ortak öğelere/bileşenlere sahip olması gerekir.
intersection = (a, b) ->
[a, b] = [b, a] if a.length > b.length
value for value in a when value in b
x = ["hello", "two", "three"]
y = ["hello"]
intersection x, y // ["hello"]
here.
benim örneği inceleyelim, bir işlev is_in yaptık: kesişim örneğe göz ettikten sonra
array1 = ["hello","two","three"]
array2 = ["hello"]
is_in = (array1, array2) ->
for i in array2
for j in array1
if i is j then return true
console.log is_in(array1, array2)
, başka şekilde bunu başarabilirsiniz:
intersection = (a, b) ->
[a, b] = [b, a] if a.length > b.length
return true for value in a when value in b
array1 = ["hello","two","three"]
array2 = ["hello"]
console.log intersection(array1, array2)
Önceden anlaşılması daha kolay - Eğer birisi, ikinci kez gönderdiğiniz kesişim kodunun herhangi bir yararı olup olmadığını görmek için bunun için bir jsPerf.com testi oluşturmak isterse merak ediyorum. – GregL
Kendiniz bir jsPerf testi oluşturabilirsiniz. 'Buraya test' bağlantılarını tıklayın ve ardından derlenmiş JavaScript kodunu buradan alın. Bundan sonra 2 vaka ile bir jsPerf oluşturun. – alessioalex
Sen deneyebilirsiniz:
(true for value in array1 when value in array2).length > 0
contains = (item for item in array2 when item in array1)
ben atmak istiyorum Düşünce kendi CoffeeScript tek satırlık delilik :-P
true in (val in array1 for val in array2)
Sadece durumda birisi (array1
çift girişleri göstermek için diziler ters) buraya gelir ve
difference = (val for val in array1 when val not in array2)
0 arasındaki farkın karşılığını aramaktadır
Bu dizi1 tüm değerlerin (farkı) ancak dizi2 size bir dizi verecektir
Hmmm, oldukça ilk satırda karıştı ve CoffeeScript temel avantajlarından biri oldu JS'nin açıklığı ve okunabilirliği artırılmalı mıydı? Belki de bu, zeki ama karmaşık olan bir kod örneğidir ve yalnızca @alessioalex'in sağladığı daha temiz kodun daha verimli olması durumunda kullanılmalıdır. – GregL
@GregL - Bu satırı demek istiyorsun - 'intersection = (a, b) ->'? – Anurag
Üzgünüm, hayır, kesişme işlevinin ilk satırı olan # 2 satırını kastediyorum. İlk satırı okuyabilmek için şu ana kadar yeterli CS sözdizimini öğrendim. :-) Daha çok, bu hattın nasıl çalıştığını anlamıyorum. – GregL