2016-09-30 11 views
-3

私は3つの場所をループし、平均の評価と評価が最も高い場所を選択しようとしています。平均評価を外していますJavaScript

私は次のように言います。

var places = [{ 
    name: "place 1", 
    reviews: 100, 
    rating: 5, 
},{ 
    name: "place 2", 
    reviews: 10000, 
    rating: 5, 
},{ 
    name: "place 3", 
    reviews: 10000000, 
    rating: 4, 
}]; 

for (i = 0; i < places.length; i++) { 

    // loop through and calculate the highest average reviews 
    var rating = places[i].rating; 
    var reviews = places[i].reviews; 

    // work out the average score place 3 should be the highest 

} 

http://jsbin.com/loyequluke/edit?js,console,output

私は何をしたい任意の提案は、3ヶ所のうち、最も高い平均格付けを、見つけることです。

正しい結果は3番目の場所になりますが、これをどのように手助けしてくれるのか分かりません。

+1

あなたが書いたことを見てください。 '(A * B)/ B'はどうすると思いますか? –

+0

何か提案がありますので、私は質問しています。 @AndréDionはなぜあなたが必要なデータを持っていないのか説明できますか? – user1503606

+1

「レビュー」と「評価」は実際には何を意味していますか? 「レビュー:10000000」と「評価:4」の意味は? –

答えて

1

以下のコードをチェックして、この方法が有効かどうか教えてください。私はあなたが最高得点をどのように計算しているのかわからないので、値を取得するのは(rating * reviews)/ratingと仮定します。与えられたコードスニペットを実行し、あなた自身のために結果を見ることができます。基本的に、あなたは計算する考えを持っていますが、このベストは数百の小さなレコードのために働きます。

var places = [{ 
 
    name: "place 1", 
 
    reviews: 100, 
 
    rating: 5, 
 
}, 
 
{ 
 
    name: "place 3", 
 
    reviews: 30000000, 
 
    rating: 23, 
 
}, 
 

 
{ 
 
    name: "place 2", 
 
    reviews: 10000, 
 
    rating: 5, 
 
},{ 
 
    name: "place 3", 
 
    reviews: 10000000, 
 
    rating: 4, 
 
}]; 
 

 
var highest = []; 
 
for (i = 0; i < places.length; i++) { 
 
    
 
    // loop through and calculate the highest average reviews 
 
    var rating = places[i].rating; 
 
    var reviews = places[i].reviews; 
 

 
    highest.push((rating * reviews)/rating); 
 
    
 
    // work out the average score place 3 should be the highest 
 

 
} 
 

 
var highestRating = highest[0]; 
 
var pos = 0; 
 

 
for (i = 0; i < highest.length; i += 1) { 
 
    if (highestRating < highest[i]) { 
 
     highestRating = highest[i]; 
 
     pos = i; 
 
    } 
 
} 
 

 
console.log('Highest Rating: ', highestRating); 
 
console.log('Found at position: ', pos); 
 
console.log('Place with highest score : ', places[pos]);

これはあなたのために働くかどう私たちは知ってみましょう。

+0

'(rating * reviews)/ rating'はどうにか簡略化できますか? – Biffen

+0

私は分かりません、平均計算はOPまでですので、それについては何も言えません。 – Samundra

+0

よく '(評価*レビュー)/評価==レビュー'。本当に2つのループが必要ですか? – Biffen

関連する問題