"availability_meta.supplier.price"
gibi nokta sınırlanmış dizeler olarak gelen bir grup nesne özniteliğim var ve record['availability_meta']['supplier']['price']
'a karşılık gelen bir değer atamam gerekiyor.Javascript: Nokta ile sınırlandırılmış dizeleri iç içe nesne değerine dönüştürün
Her şey 3 seviye derin değil: çoğu yalnızca 1 seviye derin ve çoğu 3 seviyeden daha derindir.
Programatik olarak Javascript'te atamanın iyi bir yolu var mı? Örneğin, ben gerekir:
["foo.bar.baz", 1] // --> record.foo.bar.baz = 1
["qux.qaz", "abc"] // --> record.qux.qaz = "abc"
["foshizzle", 200] // --> record.foshizzle = 200
ben beraber bir şeyler kesmek olabilir hayal, ama öyle önerilerinizi takdir ederiz akılda herhangi iyi bir algoritma yok. Bu işe yaramazsa lodash kullanıyorum ve bunun hızlı bir şekilde çalışmasını sağlayabilecek diğer kütüphanelere açık.
EDIT bu, arka uçtadır ve nadiren çalışır, bu nedenle boyut, hız vb. Için en iyi duruma getirmek için gerekli değildir. Aslında kod okunabilirliği, gelecekteki devreler için bir artı olabilir.
EDIT 2 Bu, başvurulan çoğaltmayla aynı DEĞİLDİR. Yani, aynı nesne için bu atamayı birden çok kez yapabilmem gerekiyor ve "çift" yanıt her seferinde alt anahtarların üzerine yazılacak. Lütfen tekrar açılsın! Size almak için
1. '' 'ile ayırın. 3. ??????? 4. PROFIT !!!! 111 – zerkms
Ha evet hepsi bu konuyla ilgili '' ?????? '' bölüm – tyler
Açısalların ['$ parse'] (https://docs.angularjs.org/api/ng/service/ $ parse) bunu gayet iyi yapıyor. Belki de [kaynak kodu] 'na bir bakın (https://github.com/angular/angular.js/blob/master/src/ng/parse.js#L956) bunun için – Phil