gpt4 book ai didi

typeahead.js - 猎犬识别错误?

转载 作者:行者123 更新时间:2023-12-05 00:59:28 25 4
gpt4 key购买 nike

我正在使用最新版本的 typeahead.js (v0.11.1)。当对数据集值使用不同的 id 时,我观察到了奇怪的行为。

我创建了一个 JSFiddle .这是js代码:

var ds = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: [{id: 1, name: "a b 1"}, {id: 2, name: "a b 2"}, {id: 3, name: "a"}],
identify: function(obj) { return obj.id; }
});

$('#go').typeahead(null, {
name: 'ds',
display: 'name',
source: ds
});

现在,如果我更改“本地”的数据,则预先输入可能会出现故障。这里只是一些例子:

将这些值之一用于“local”(注意第三个元素是以“1”开头的随机数):

[{id: 1, name: "a b 1"}, {id: 2, name: "a b 2"}, {id: 15, name: "a"}]

[{id: 1, name: "a b 1"}, {id: 2, name: "a b 2"}, {id: 1849, name: "a"}]

现在,当我输入文本框:“a b”时,预输入预计会提示“a b 1”和“a b 2”,但实际上它只提示“a b 1”。

这可以通过以下方法之一解决:
  • 将第三个元素的 'id' 属性更改为不以 '1' 开头的值。例子:

    [{id: 1, name: "a b 1"}, {id: 2, name: "a b 2"}, {id: 23, name: "a"}]
  • 将第三个元素的 'name' 属性更改为不以 'a' 开头的值。例子:

    [{id: 1, name: "a b 1"}, {id: 2, name: "a b 2"}, {id: 15, name: "s"}]
  • 删除 Bloodhound 构造函数对象的 'identify' 属性。

  • 更重要的是,如果我使用大于 2 的数字作为第一个元素的 id,如下所示:

    [{id: 3, name: "a b 1"}, {id: 2, name: "a b 2"}, {id: 15, name: "a"}]

    现在当我在文本框中输入“a b”时,没有任何建议!

    最佳答案

    回答我自己的问题。是的,猎犬中有一个错误。 SearchIndex.getIntersection() 函数未正确实现。你可以取出这个函数并像这样测试它:

    getIntersection([1,2,15],[1,2])

    它应该返回 [1,2] 作为结果,但实际上它返回 [1]。这是因为它错误地使用了 sort() 函数来对数字进行排序。根据 w3schools 的说法:

    By default, the sort() method sorts the values as strings in alphabetical and ascending order.

    This works well for strings ("Apple" comes before "Banana"). However, if numbers are sorted as strings, "25" is bigger than "100", because "2" is bigger than "1".



    所以这个函数可以通过改变这两行来修复:
            arrayA = arrayA.sort();
    arrayB = arrayB.sort();

    进入:
            arrayA = arrayA.sort(function(a, b){return a-b});
    arrayB = arrayB.sort(function(a, b){return a-b});

    我花了 1 天的时间才发现 :(

    关于typeahead.js - 猎犬识别错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30826220/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com