Yanıtım büyük ölçüde buradaki en yüksek puan alan cevaba dayanıyor ve umarım herkes anlar (GitHub'mda da aynı açıklamaya sahip). Bu yüzden harita ile ilişkilendirilmesi işe yarıyor:
Object.keys(images).map((key) => images[key] = 'url(' + '"' + images[key] + '"' +
')');
İşlevin amacı, bir dizi döndürmeden tüm nesneler (nesneler ve diziler) için kullanılabilir bir yöntemi kullanarak bir nesneyi alıp nesnenin orijinal içeriğini değiştirmektir. JS içindeki hemen hemen her şey bir nesnedir ve bu nedenle miras boru hattının aşağısında yer alan unsurlar, potansiyel olarak teknik olarak satırdakiler için kullanılabilir olanları kullanabilir (ve bunun tersi).
Bunun nedeni, varolan bir nesneyi değiştirmek yerine bir dizinin açık veya örtük RETURN'unu sağladığınız GEREKTİREN bir diziyi döndüren .map işlevlerinden kaynaklanmaktadır. Aslında, nesnenin bir dizi olduğunu düşünmek için programı kandırırsınız, bu da harita işlevini, tek tek tuşların ilişkili olduğu değerlerle hareket ederek kullanmanıza izin verir (aslında yanlışlıkla diziler döndürdüm, ancak düzelttim). Normal anlamda bir geri dönüş olmadığı sürece, orijinal nesne stili bozulmadan oluşturulan ve programlandığı gibi değiştirilen bir dizi olmayacaktır.
Bu özel program, görüntüler adı verilen bir nesneyi alır ve anahtarlarının değerlerini alır ve başka bir işlevde kullanmak üzere URL etiketlerini ekler. Orijinal bu:
var images = {
snow: 'https://www.trbimg.com/img-5aa059f5/turbine/bs-md-weather-20180305',
sunny: 'http://www.cubaweather.org/images/weather-photos/large/Sunny-morning-east-
Matanzas-city- Cuba-20170131-1080.jpg',
rain: 'https://i.pinimg.com/originals/23/d8
/ab/23d8ab1eebc72a123cebc80ce32b43d8.jpg' };
... ve değiştirildi:
var images = {
snow: url('https://www.trbimg.com/img-5aa059f5/turbine/bs-md-weather-20180305'),
sunny: url('http://www.cubaweather.org/images/weather-photos/large/Sunny-morning-
east-Matanzas-city- Cuba-20170131-1080.jpg'),
rain: url('https://i.pinimg.com/originals/23/d8
/ab/23d8ab1eebc72a123cebc80ce32b43d8.jpg')
};
Nesnenin orijinal yapısı bozulmadan bırakılır ve geri dönüş olmadığı sürece normal özellik erişimine izin verilir. Normal gibi bir dizi döndürmeyin ve her şey iyi olacak. Amaç, orijinal değerleri (görüntüler [anahtar]) başka bir şeye değil, istenen şeye YENİDEN TASARLAMAKTIR. Bildiğim kadarıyla, dizi çıktısını önlemek için görüntü [anahtar] REASSIGNMENT olmalı ve bir dizi döndürmek için örtük veya açık bir istek (değişken ataması bunu yapar ve benim için ileri geri aksaklık) vardı.
DÜZENLE:
Orijinal nesneyi değiştirmekten kaçınmak için yeni nesne oluşturma ile ilgili diğer yöntemini ele alacak (ve yanlışlıkla çıkış olarak bir dizi oluşturmayı önlemek için yeniden atama gerekli görünmektedir). Bu işlevler ok sözdizimini kullanır ve ileride kullanmak üzere yeni bir nesne oluşturmak istiyorsanız kullanılır.
const mapper = (obj, mapFn) => Object.keys(obj).reduce((result, key) => {
result[key] = mapFn(obj)[key];
return result;
}, {});
var newImages = mapper(images, (value) => value);
Bu işlevlerin çalışma şekli şöyledir:
mapFn daha sonra eklenecek işlevi alır (bu durumda (değer) => değer) ve mapFn (burada olduğu gibi döndürdüğünüz değeri değiştirirseniz iki ile çarpılır) olarak saklanan her şeyi döndürür obj) [anahtar],
ve sonra sonuçtaki anahtarla ilişkili orijinal değeri yeniden tanımlar [key] = mapFn (obj) [key]
ve sonuçta gerçekleştirilen işlemi döndürür (.reduce fonksiyonunun sonunda başlatılan parantez içindeki akümülatör).
Tüm bunlar seçilen nesne üzerinde yapılıyor ve STILL, döndürülen bir dizi için örtük bir istek OLAMAZ ve sadece değerleri anlayabildiğim kadarıyla yeniden atadığımda çalışır. Bu, bazı zihinsel jimnastik gerektirir, ancak yukarıda görülebileceği gibi kod satırlarını azaltır. Çıktı tam olarak aşağıda görüldüğü gibidir:
{snow: "https://www.trbimg.com/img-5aa059f5/turbine/bs-
md-weather-20180305", sunny: "http://www.cubaweather.org/images/weather-
photos/l…morning-east-Matanzas-city-Cuba-20170131-1080.jpg", rain:
"https://i.pinimg.com/originals/23/d8
/ab/23d8ab1eebc72a123cebc80ce32b43d8.jpg"}
Bunun NUMARA OLMAYANLAR ile çalıştığını unutmayın. MapFN işlevinde DEĞERİ GERİ DÖNDÜREN HERHANGİ BİR nesneyi çoğaltabilirsiniz.
Object.keys
, iyi tanımlanmış bir sıraya sahip değildir. Bu sorunlu olabilir,Object.getOwnPropertyNames
bunun yerine kullanmanızı öneririm .