2016-03-27 23 views
-2

このコードを入力するより効率的な方法があるかどうかを知りたいと思います。 .forEachメソッド呼び出しが想定するJavaScript JSON。より効率的な方法

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

注:属性でjqueryのを使用して

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

をしますか? –

+0

いい方法はありません。 1行のコードでより多くのデータを取得する。私はdata.items [0]、[1]、[2] .statistics.viewCountを考えていた –

+1

わからない。しかし、ここで質問をするより効率的な方法があります。 –

答えて

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]); 
 
});
ここ

+0

jQueryは、ネイティブに書かれたJSよりも高速に処理する方法を教えてください。 – Nonemoticoner

+0

ありがとうございます。病気はそれを行ってください。 –

+0

これは、スピードではなくすべてを手動で入力しなければならないという問題の行に沿っていると思いました。 – user2950720

0

がわずかに少ない繰り返しでバージョンだセレクタで始まりますES5以上; ES3をターゲットにしている場合は、Underscoreの_.eachなどのライブラリや、現在のライブラリが提供するものを使用することができます。あなたのデータを想定し

0

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

のようなものです私はあなたがこのコードが遅いと思わせる何か

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

JSBin here

+0

最初のidは 'view'であり、' view1'ではありません。 –

+0

ありがとう、私は例を修正 – G3z