2014-09-28 68 views
-1

我正在做我的第一個項目,使用AngularJS,現在我遇到了一個JavaScript無法理解的問題。也許這對於更有經驗的JS來說是微不足道的,如果是這樣,我希望你們能幫助我:)JavaScript字符串比較總是返回true

我在函數中做了這個字符串比較,它接收一個作爲參數從一個視圖傳遞過來的id,然後比較對象的ID保存在服務:

for (var i = 0; i < this.Sessions.length; i++) { 

     if (this.Sessions[i].sessionId === sessionId) { 

      for (var j = 0; j < this.Sessions[i].Instances.length; j++) { 
       if (this.Sessions[i].Instances[j].instanceId === instanceId); 
       { 
        console.log("InstanceId's: " + this.workoutSessions[i].Instances[j].instanceId + " " + instanceId); 

        //Do stuff and return. 

       } 
      } 
     } 
    } 

當我運行的方法的所有實例的所有實例Id的將評估爲true。爲什麼???據我所知,我只是比較字符串,但我猜不是。外部比較按照它應該的方式工作,這對我來說更加陌生。

在控制檯中輸出,顯示無論字符串的值如何,它們的計算結果都爲true。

INSTANCEID的:l0h34qzzgdlpu8fr 42p9smh9kxdsfw29

INSTANCEID的:42p9smh9kxdsfw29 42p9smh9kxdsfw29

我真正想要做的是儘快停止功能,因爲我已經找到了正確的實例,但是,如果我把一個return語句內if-block我的編譯器告訴我j ++語句無法訪問,表明不管表達式是什麼,以及......這超出了我的意思。

怎樣的參數從視圖傳遞:

<div ng-repeat="instance in session.Instances"> 

    //Some form controls here... 

    <div style="float: right;"> 
     <button class="btn btn-default" ng-click="addOne(session.sessionId, instance.instanceId)"> + 1</button> 
     <button class="btn btn-default">Remove</button>  
    </div> 

</div> 

任何人的幫助?

在此先感謝。

+3

你的代碼看起來像'如果(...)你的代碼將是相同的; {}'。那'';'是不需要的...... – DCoder 2014-09-28 07:34:26

+0

你能設置一個蹲跳者嗎?不能使用提供的代碼來找出問題... – harishr 2014-09-28 07:37:02

+0

yep @DCoder是對的,這樣做:「if(this.Sessions [i] .Instances [j] .instanceId === instanceId);「就像這樣做:「if(this.Sessions [i] .Instances [j] .instanceId === instanceId){}」 – Josep 2014-09-28 07:38:01

回答

0
if (this.Sessions[i].Instances[j].instanceId === instanceId); 

末結腸似乎是罪魁禍首...

0

刪除分號如果子句。

if (this.Sessions[i].Instances[j].instanceId === instanceId) 
{ 
     ; 
} 

{ 
     console.log("InstanceId's: " + this.workoutSessions[i].Instances[j].instanceId + " " + instanceId); 
     //Do stuff and return. 
}