2014-10-09 51 views
0

我目前正在通過雄辯的Javascript和來到松鼠的例子。當Jacques(問題的主題)變成松鼠時,我們正在使用一段代碼來創建表格/矩陣。它是我們之前提到的一本期刊。雄辯的Javascript第二。第4章計算相關。 Lycanthrope的日誌 - [IndexOf Defined] Pt 1

這裏是代碼。

function hasEvent(event, entry) { 
return entry.events.indexOf(event) != -1; 
} 

function tableFor(event, journal) { 
    var table = [0, 0, 0, 0]; 
    for (var i = 0; i < journal.length; i++) { 
    var entry = journal[i], index = 0; 
    if (hasEvent(event, entry)) index += 1; 
    if (entry.squirrel) index += 2; 
    table[index] += 1; 
    } 
    return table; 
} 

console.log(tableFor("pizza", JOURNAL)); 
// → [76, 9, 4, 1] 

現在我明白了什麼功能tableFor做,以及如何引用從變量日誌事件(我們的雜誌作爲單獨的文件和參考),但我不明白的!= 1和內部返回函數tableFor。我想我們要確定,如果我們正在尋找的事件返回true,如果這是爲什麼我們不做「if」條目?或者可能== 0或== 1?我錯過了什麼嗎?

如果關於

return entry.events.indexOf(event) != -1; 

這將不勝感激有人可以解釋一切。

+2

使用書名和章節號作爲標題是不是爲你的要求非常翔實。您可能想簡化這一點以強調實際問題。 – 2014-10-09 14:20:13

+0

您可能想要了解Array.prototype.indexOf實際執行的操作。 – Quentin 2014-10-09 14:20:40

+0

謝謝我會這樣做的! – JohnnyBoi 2014-10-09 14:23:24

回答

0

什麼OP要求有兩個方面:

  1. indexOf功能如何工作
  2. 爲何不使用時,它是比較

第一個問題if聲明被接受的答案回答。但是,第二個不是。

由於OP接受了答案,OP好像不負責任,但對於這個問題的其他觀衆來說,它可能還不清楚。

function hasEvent(event, entry) { 
return entry.events.indexOf(event) != -1; 
} 

相當於下面:

function hasEvent(event, entry) { 
    if (entry.events.indexOf(event) != -1) 
     return true; 
    else 
     return false; 
    } 
2

當且僅當傳入的內容出現時,indexOf函數返回一個正數(或零)。如果沒有發生indexOf返回-1。如果事件發生,hasEvent函數將返回true,否則返回false。