2016-01-16 83 views
0

非常簡單的代碼片段(我是編程新手),我很難過。Javascript ELSE語句無論IF語句如何運行

無論IF語句是否爲真,控制檯爲什麼每次循環都會返回0?

例如,IF語句運行,找到一個匹配並將1寫入控制檯,但隨後ELSE語句也會運行,重置變量「count」。

//Snippet of the array of objects, that the program searches through 
 
var students = [ 
 
    { 
 
    name: 'Dave', 
 
    track: 'Front End Development', 
 
    achievements: 158, 
 
    points: 14730 
 
    }, 
 
    { 
 
    name: 'John', 
 
    track: 'Full Stack', 
 
    achievements: '24', 
 
    points: '2450' 
 
    } 
 
]; 
 

 
//Declaring variables 
 
var message = ''; 
 
var student; 
 
var count = 0; 
 
var name; 
 
var search; 
 

 

 
while (true) { 
 
\t search = prompt("Enter a name to see their report, or type 'quit' to exit."); 
 
\t if (search.toUpperCase() == 'QUIT' || search.toUpperCase() == null) { 
 
\t \t console.log(8); 
 
\t \t break; 
 
\t } 
 
\t for (i = 0; i < students.length; i++) { 
 
\t \t student = students[i]; 
 
\t \t name = search.toUpperCase(); 
 
\t \t if (name == student.name.toUpperCase()) { 
 
\t \t \t count ++; 
 
\t \t \t console.log(count); 
 
\t \t } else { 
 
\t \t \t count = 0; 
 
\t \t \t console.log(count); 
 
\t \t } 
 
\t } 
 
}

+0

對於'name == student.name.toUpperCase()',您總是得到'false'。請寫完整的代碼,以便其他人可以幫助你。並使用'++ count;'然後'count ++' –

+0

'name'或'student.name.toUpperCase()'其中一個返回'false'值。因此控制檯返回0.徹底調試您的代碼。 ''for'loop'外的'count'變量初始化爲0 – user61092

+0

'students'和'name'變量的值是什麼? – madox2

回答

0

我不能立即看到你的問題的原因,的count = 0else分支復位看起來錯誤的,如果名字重複會造成問題,但是你至少應該得到1一次在第一場比賽,而你斷言它總是返回0

無論哪種方式,寫這將是更習慣的方法:

var uSearch = search.toUpperCase(); 
var count = students.filter(function(student) { 
    return student.name.toUpperCase() === uSearch; 
}).length; 
0

移動count = 0;for loop的。從一個空的櫃檯開始。

0

權,如馬特說......你可以先初始化計數= 0外循環。在條件被搶先調試之後,我還會添加一行console.log(name)

count = 0 
for (i = 0; i < students.length; i++) { 
    student = students[i]; 
    name = search.toUpperCase(); 

    # show me the "name" before running condition 
    console.log("name pulled from search: ",name) 

    if (name == student.name.toUpperCase()) { 
    count++; 
    console.log(count); 
    } else { 
    count = 0; 
    console.log(count); 
    } 
} 

打印"name"應該給你一個想法,條件如何匹配。

1

這是比較兩個數組值的示例代碼。

var count = 0; 

var students = [ 
    { name:"string 1", value:"this", other: "that" }, 
    { name:"string 2", value:"this", other: "that" } 
]; 

var search = [ 
    { name:"string 1", value:"this", other: "that" }, 
    { name:"string 3", value:"this", other: "that" } 
]; 

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

for (var j = 0; j < search.length; j++) { 

    var student = students[i].name.toUpperCase(); 

    var names = search[j].name.toUpperCase(); 

    if (names == student) { 
    count++; 

    console.log(count); 
    } else { 
    count = 0; 

    console.log(count); 
    } 
    } 
} 
+0

'OP'使用'student.name'大概是因爲學生是一個具有'name'屬性的對象(並排其他),而不僅僅是一個普通的字符串。 – Alnitak

+0

@Alnitak現在在這個代碼中將兩個對象與三個屬性放在一個數組中,並且希望將它與其清楚地進行比較。 – Mack

+0

現在您已經引入了雙重嵌套搜索 - 該OP僅包含_one_搜索字符串。 – Alnitak