2016-03-27 21 views
-2

Bu kodu yazmanın daha etkili bir yolu olup olmadığını bilmek istiyorum. .forEach yöntem çağrısı varsayarJavaScript JSON. Daha verimli bir yöntem

["views","views2","views3"].forEach(function(id, index){ 
    document.getElementById(id).innerHTML = data.items[index].statistics.viewCount; 
}); 

Not: Bir özelliğin ile jquery kullanarak

view = + data.items[ 0 ].statistics.viewCount 
view1 = + data.items[ 1 ].statistics.viewCount 
view2 = + data.items[ 2 ].statistics.viewCount 
document.getElementById("views").innerHTML = view; 
document.getElementById("views2").innerHTML = view1; 
document.getElementById("views3").innerHTML = view2; 
+1

Bu kod yavaş Ne çıkardın

data.items.map(function(el, i){ var idx = 'views' + (i > 0 ? i+1 : ''); document.getElementById(idx).innerHTML = el.statistics.viewcount; }); 

JSBin here yapacağını mı? –

+0

Hiçbir şey daha iyi bir yol olmazdı. Tek bir kod satırıyla daha fazla veri alma. Ben data.items düşünüyordum [0], [1], [2] .statistics.viewCount –

+1

Bilmiyorum. Ancak, SO –

cevap

0

var viewCountArr = data.items.map(function(item) { 
 
    return item.statistics.viewCount; 
 
}); 
 

 
var elements = $('[id^="views"]'); 
 

 
$.each(elements, function(index, value) { 
 
    $(this).html(viewCountArr[index]); 
 
});
İşte

+0

jQuery, yerel olarak yazılan JS'den daha hızlı işleri nasıl yapacak? – Nonemoticoner

+0

Teşekkürler. Bi şans tanıcam. –

+0

Herşeyi manuel olarak – user2950720

0

biraz daha az tekrarlama ile bir versiyonu seçici ile başlar ES5 veya üstü; ES3'ü hedefliyorsanız, Underscore'un _.each ya da mevcut kitaplıklarınız ne sağlarsa onu kullanmak isteyebilirsiniz. Verilerinizi varsayarak

0

var data = { 
    items: [ 
    {statistics: {viewcount: 5}}, 
    {statistics: {viewcount: 346}}, 
    {statistics: {viewcount: 123}} 
    ] 
}; 

gibi bir şey i

+0

hızına göre yazmak zorunda kaldığımı düşünürsek, ilk kimliğin "view" değil "view1" olduğunu unutmayın. –

+0

Teşekkürler, örneği düzelttim – G3z

İlgili konular