javascript - 从自动完成结果 Json 中删除重复项

标签 javascript jquery ajax json

我有一个问题,我添加了两个要素类,这意味着我有时会得到在自动建议中重复的结果。我想知道是否有一种方法可以检查重复项并获取替代项,而不是两次显示相同的结果。

这是我的代码(有效):http://jsfiddle.net/spadez/nHgMX/4/

  $(function() {
      jQuery.ajaxSettings.traditional = true; 
    function log( message ) {
      $( "<div>" ).text( message ).prependTo( "#log" );
      $( "#log" ).scrollTop( 0 );
    }

    $( "#city" ).autocomplete({
      source: function( request, response ) {
 $.ajax({
          url: "http://ws.geonames.org/searchJSON",
          dataType: "jsonp",
       data: {
        featureClass: ["A","P"],
        style: "full",
        maxRows: 7,
        name_startsWith: request.term,
        country: "UK"
      },           
          success: function( data ) {
            response( $.map( data.geonames, function( item ) {
              return {
                label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                value: item.name
              }
            }));
          }
        });
      },
      minLength: 1,
      select: function( event, ui ) {
        log( ui.item ?
          "Selected: " + ui.item.label :
          "Nothing selected, input was " + this.value);
      },
      open: function() {
        $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
      },
      close: function() {
        $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
      }
    });
  });

任何帮助或信息将不胜感激

最佳答案

很难准确地说出你在问什么。但是要从对象数组中删除重复项,您可以使用下划线的 _.uniq()

 $.map( _.uniq(data.geonames, false, function(o){return o.adminName1})

Here's a jsfiddle不显示重复项。但是同样,很难从您的结构中判断出真正的重复项是什么,但是这段代码应该会让您朝着正确的方向前进

你没有使用下划线,自己实现uniq真的很容易,看看azcn2503's answer

关于javascript - 从自动完成结果 Json 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474813/

相关文章:

javascript - 运行 ajax 请求时出现 TypeError : $. ajax 不是函数

javascript - 如果 margin-left == 200px 则触发事件;

javascript - 如果变量(或元素值)保持不变超过 2 秒,该怎么办?

javascript - Angular 调用空 ng-repeat 一次?

javascript - float 饼图工具提示百分比

javascript - $(this) 不同于 $.each 循环上下文中的 'element' 参数

javascript - 如何在 Backbone 代码库中强制执行 'use strict'?

javascript - Javascript promise 中的错误处理

javascript - 使用带有按键事件的原型(prototype)函数

javascript - 如何通过主干中的 ajax 调用使用其模型渲染多个 View