Registros duplicados que vienen en la búsqueda de escritura anticipada

Estoy implementando la búsqueda de typeahead usando typeahaead.js pero al escribir en el cuadro de búsqueda de typeahead, en el menú desplegable de sugerencias, cada registro viene dos veces. Revisé el origen de datos (es decir, la llamada API POST), solo tiene registros únicos. ¿Dónde estoy haciendo mal? Ayuda o enlaces relevantes.

Incluso el control no va a duplicar el detector.

Problema similardiscutido aquí, pero no hay solución.

  <div id="bloodhound">
        <input class="typeahead" type="text" placeholder=" Search">
    </div>


<script>
        var result = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,

            remote: {
                url: 'https://api1.com/idocs/api',
                wildcard: '%QUERY',
                rateLimitWait: 300 ,
                transport: function (opts, onSuccess, onError) {
                    var url = opts.url;
                    $.ajax({
                        url: url,
                        type: "POST",
                        success: onSuccess,
                        error: onError,
                    });


                },
                filter: function (data) {
                    if (data) {
                        return $.map(data, function (object) {
                            return data.data.results.data;
                        });
                    } 
                }
            },
            dupDetector: function (remoteMatch, localMatch) {
                return remoteMatch.id === localMatch.id;
            }
        });
        result.initialize();
        $('input').typeahead(null, {
            name: 'result',
            displayKey: 'id',
            source: result.ttAdapter(),
            templates: {
                empty: ['<div>', 'no results found', '</div>'],
                suggestion: function (data) {
                    return '<p>' + data.basicinfo.object_name + '</p>';

                }

            },
        });

Respuestas a la pregunta(1)

Su respuesta a la pregunta