使用咖啡脚本进行线性搜索

时间:2016-07-07 10:08:44

标签: coffeescript

我正在尝试编写用于线性搜索的咖啡脚本,但是我被困在除了最后一行的值之外还要返回一个值的位置。 这是我的代码片段:

Linear_Search = (array, desired) ->
    for x in array
        do ->
            if x is desired
                return true
    false

array = [2, 4, 6, 7, 3, 1, 5]

if Linear_Search(array, 4)
    console.log("Found")
else
    console.log("Not Found")

if Linear_Search(array, 9)
    console.log("Found")
else
    console.log("Not Found")

运行此脚本后,我得到了答案

"Not Found" "Not Found"

我尝试过删除return关键字等各种内容。但它们似乎没有起作用。帮助我学习这项非常棒的技术。

Compile Online

1 个答案:

答案 0 :(得分:2)

你的功能有缺陷

Linear_Search = (array, desired) ->
    for x in array
        do ->
            if x is desired
                return true
    false

应该是:

Linear_Search = (array, desired) ->
    for x in array
        found = do (x) ->
            x is desired

        return true if found

    false

do创建一个内部函数(闭包),它的响应在你的函数中没有被考虑。我不确定它是否会增强这种情况下的功能(可能有一个原因我错了 - 如果情况如此,那么有更多知识的人会希望权衡)。

我会写

Linear_Search = (array, desired) ->
    for x in array
        return true if x is desired

    false