2016-11-16 31 views
-1

我正在努力加強我的JavaScript技能與代碼上的一些katas。這裏有一個這樣的kata:有人可以幫助解釋爲什麼我得到這個'價值不是預期的'錯誤與Javascript?

在求職面試中,您有責任編寫一個算法來檢查給定字符串s是否可以由其他兩個字符串part1和part2組成。

限制是part1和part2中的字符與s中的字符順序相同。

面試官給你下面的例子,告訴你從給定的測試用例中找出其餘的部分。

例如:

'codewars' 是 'CDW' 和 'oears' 合併:

s: c o d e w a r s = codewars 
part1: c d w   = cdw 
part2: o e a r s = oears 

這裏是我的解決方案,我的工作:

function presentInString(element, index, array) { 
    return string.includes(element); 
} 

function isMerge(s, part1, part2) { 
    string = s; 
    var mergedParts = (part1 + part2).split(''); 
    mergedParts.every(presentInString); 
} 

我的方法很簡單,我得到一個字符串'codewars'並與零件'cdw''oears'傳遞上面的m方法應該返回true,因爲所有的字符都在字符串中。但我不斷收到Value is not what was expected錯誤。我必須使用.every方法錯誤,但我不知道如何。我非常基於Javascript MDN文檔。有人能找出我做錯了什麼嗎?

  • 這是一個卡塔正在進行的方式,我沒有測試所有的邊緣情況。有些情況會失敗。

此外,我是否必須創建另一個功能進入.every?我寧願在.every範圍內的邏輯正確,而不是寫另一個函數來傳遞。

回答

0

我不能擔保您的整體算法,但isMerge的問題是它不使用返回值every並且不返回任何內容。你可能想:

return mergedParts.every(presentInString); 

的最後一行,這使得isMerge任何every回報(true如果presentInString返回每個元素的truthy值,false如果它不)的返回值。

+0

謝謝@ T.J。克勞德。這是我需要習慣從Ruby轉移的東西。我感謝你指出了這一點。一旦時間限制解除,我會接受。 –

+0

@DanRubio:啊,當然! Ruby和CoffeeScript都是這樣做的。我確實認爲它看起來有點像。 –

相關問題