2014-09-28 84 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. 
}