2014-05-07 205 views
0

我試圖在每次發生循環時從revlength中減去。例如,如果有2'Google用戶的帖子,然後從距離減去2從變量中減去一個數字

這是我試過的。

var revlength = place.reviews.length; 
if(place.reviews[index].author_name == 'A Google User') { 
    $("#revnum").html(revlength--); 
} 

在添加到腳本,代碼不適合

$.each(place.reviews, function (index, value) { 
     if (place.reviews[index].text.length != 0) { 
      if (place.reviews[index].text.length == 0) { 
       $("#revnum").html(--place.reviews.length); 
      } 
      if (place.reviews[index].author_name == 'A Google User') { 
       $("#revnum").html(--place.reviews.length); 
       var imgid = '<img src="img/gplus.gif" width="50" height="50">'; 
      } else { 
       $("#revnum").html(revlength); 
       var imgid = '<img src="img/user.gif" width="50" height="50">'; 
      } 
+1

哪裏是循環? – Sumeet

+0

你不改變'place.reviews.length;'所以如果這是一個循環,那麼'revlength'每次只會有相同的值。它看起來像你需要'--place.reviews.length;'。你應該展示更多的代碼。 – jfriend00

+0

循環開始line2,例如我有2'谷歌用戶的帖子 – user3206729

回答

1

我想這是你想要什麼:

var revlength = $.grep(place.reviews, function (val) { 
    return val.author_name !== 'A Google User'; 
}).length; 
// alert(revlength); 
// console.log(revlength); 
3

工作試試這個..

變化

$("#revnum").html(revlength--);//you are doing post-decrement 

$("#revnum").html(--revlength);//you need to change it pre-decrement. 

如果其他部分是正確的,那麼它會確定。

說明:

--I和我 - 其中的位置 - 確定之前或值被用於後一個是否被減去。

如果i--值將在遞減之前使用。 如果--i值將在遞減後使用。

+0

你能解釋一下這個區別嗎? –

+0

後減量(例如 - revlength--)將首先給出revlength的值,然後減小revlength的值。預先減量(例如:--revlength)將首先減小旋轉長度的值,然後給出遞減值。 –

+0

有道理。但你的答案中的最後一行需要修復。 –

-1

試試這個,

var revlength = place.reviews.length; 
revlength = parseInt(revlength.toString()); 
if(place.reviews[index].author_name == 'A Google User') { 
revlength--; 
$("#revnum").html(revlength); 
} 
+0

請解釋爲什麼您將數字轉換爲字符串並再次轉換爲數字? –

+0

這確保您的變量爲整數,然後您可以輕鬆地對該變量執行遞增和遞減操作 –

1

把我的評論(這似乎已工作)到一個答案:

你需要真正遞減place.reviews.length

if(place.reviews[index].author_name == 'A Google User') { 
    $("#revnum").html(place.reviews.length--); 
} 

你原來的代碼只是遞減一個臨時變量revlength這是不持久的,因爲你只是重新從每次place.reviews.length變量。因此place.reviews.length從來沒有減少。


通過解釋,也許你的印象是,後做事:

var revlength = place.reviews.length; 

這時候你再那樣:

revlength-- 

,這也將遞減place.reviews.length,但事實並非如此。 revlength是一個新變量,其值設置爲place.reviews.length,但是當您執行revlength--時,該變量僅更改該變量並且對place.reviews.length沒有任何影響。所以,對於遞減值持續存在,您需要遞減place.reviews.length

+0

如果'place.reviews'是一個數組,那麼這段代碼是不是會截斷數組? –

+0

@SalmanA - 是的,如果它是一個數組,它會截斷數組。 OP必須展示更多的代碼才能知道哪種解決方案最好。我認爲這只是一個數字。如果它是一個數組,並且他們不想更改數組,那麼他們需要將一次循環外的長度變爲另一個變量,並只減少該變量。我們儘可能地利用問題中共享的部分背景來做到最好。 – jfriend00

+0

@SalmanA - 這個答案的要點是他們需要減少在循環外部初始化的東西,而不是在循環內部初始化的東西,因爲減少它們在循環內部的東西不會持久,因爲它們只是覆蓋遞減的值下一次通過循環。 – jfriend00