Haritanın davranışıyla oldukça kafa karıştırıyorum().Neden bir dizide bir js dizisi orijinal diziyi değiştiriyor?
böyle nesneler dizisi var:
const products = [{
...,
'productType' = 'premium',
...
}, ...]
ve ben aynı diziyi dönmelidir bir işleve ancak tüm ürün ile bu diziyi geçiyorum yapılan serbest:
[{
...,
'productType' = 'free',
...
}, ...]
fonksiyonudur: aşağıdaki dizi döndürür
const freeProduct = function(products){
return products.map(x => x.productType = "free")
}
:
["free", "free", ...]
Yani ben olmak benim işlevini yeniden yazdı: amaçlandığı gibi diziye döner
const freeProduct = function(products){
return products.map(x => {x.productType = "free"; return x})
}
.
AMA! Ve bu, her iki durumda da orijinal ürünler dizilimin değiştirildiği zaman, aklımdan kaçtığım an.
Haritadaki() dokümanlar(), bunun olmaması gerektiğini belirtir (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map).
Hatta buconst freeProduct = function(products){
p = products.splice()
return p.map(x => {x.productType = "free"; return x})
}
gibi benim işlevi dönüm benim dizinin bir klonu oluşturmak için çalıştı Ama hala (beni deli başlar) aynı sonucu alabilirsiniz.
Neyi yanlış yaptığımı açıklayabilecek herkese çok minnettar olurum!
Teşekkür ederiz
Merhaba. Yukarıdaki kodda "=>" ne anlama geliyor? –
@HarshaKanchina Bu, ES6'da eklenen yağ ok fonksiyonu sözdizimi. [Burada] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Arrow_Functions) MDN'de bunun hakkında bazı bilgiler. – SimpleJ
Javascript işlevsel bir dil gibi davranıyor, ama aynı sınıf anahtar kelimesi gibi, bu kafa karıştırıcı, kasıtsız ve çok zaman harcıyor. 'Orijinal dizinizi değiştirmiyorsunuz. Dizideki nesneleri değiştiriyorsunuz - bu cevap doğru olsa da mantıksızdır çünkü gerçek dünyada bir şeyin parçalarını değiştiremezsiniz ve aynı kalmasını sağlayın. – Cobolt