Javascript 编写此函数的更有效方法?(德扬戈,阿贾克斯)

Javascript 编写此函数的更有效方法?(德扬戈,阿贾克斯),javascript,python,ajax,django,Javascript,Python,Ajax,Django,我现在编写函数的方式很有效,我只是想知道是否有更好或更有效的方法来编写它。这是一个ajax调用,它获取一个列表以进一步过滤地理信息,例如,如果选择了county,那么它将获取该州所有县的列表。 我仍在学习编码,希望更好地使用好的编码实践 $.ajax({ url : "filters", type : "POST", data : { search : selected_state, geog : selected_geog },

我现在编写函数的方式很有效,我只是想知道是否有更好或更有效的方法来编写它。这是一个ajax调用,它获取一个列表以进一步过滤地理信息,例如,如果选择了county,那么它将获取该州所有县的列表。 我仍在学习编码,希望更好地使用好的编码实践

$.ajax({
        url : "filters",
        type : "POST",
        data : { search : selected_state, geog : selected_geog },
        success: function(data) {
            $.each(data, function(i, v) {
              switch(selected_geog) {
                case 'County':
                case 'Dma':
                  filters.push(v.fields.name);
                  break;
                case 'Zip':
                  var exists = $.inArray(v.fields.zcta, data_check);
                  if (exists < 0) {
                    data_check.push(v.fields.zcta);
                  }
                  data_check.sort();
                  var exists2 = $.inArray(v.fields.county, filters);
                  if (exists2 < 0) {
                    filters.push(v.fields.county);
                  }
                  filters.sort();
                  break;
                case 'CD':
                  filters.push(v.fields.cd114fp);
                  break;
                case 'Zones':
                  var exists = $.inArray(v.fields.p_dma, filters);
                  if (exists < 0) {
                    filters.push(v.fields.p_dma);
                  }
                  filters.sort();
                  var exists2 = $.inArray(v.fields.owner, attrfilters);
                  if (exists2 < 0) {
                    attrfilters.push(v.fields.owner);
                  }
                  SHPconverter.attrfilters.sort();
                  var exists3 = $.inArray(v.fields.scode, data_check);
                  if (exists3 < 0) {
                    data_check.push(v.fields.scode);
                  }
                  data_check.sort();
                  break;
              }
            })
        }
      })

通过创建以元组作为值的字典查找,可以减少整个if语句部分

geo_lookup = {'County': (County, ['state', 'name']),
                  'DMA': (Dma, ['state', 'name']),
                  'CD': (Cd, ['state', 'cd']),
                  'Zip': (Zip, ['state', 'county']),  
                  'Zones': (Zones, ['sname']),
                  }

lookup_model = geo_lookup[geogVar][0]   
ordering = geo_lookup[geogVar][1]
as_json = serialize('json', lookup_model.objects.filter(state__in=searchVar).order_by(*ordering))
return HttpResponse(as_json, content_type='json')
您似乎也在尝试序列化模型,Django Rest Framework专门从事这项工作,因此仅使用它将不再需要您在视图中手动执行所有这些操作。

Try
geo_lookup = {'County': (County, ['state', 'name']),
                  'DMA': (Dma, ['state', 'name']),
                  'CD': (Cd, ['state', 'cd']),
                  'Zip': (Zip, ['state', 'county']),  
                  'Zones': (Zones, ['sname']),
                  }

lookup_model = geo_lookup[geogVar][0]   
ordering = geo_lookup[geogVar][1]
as_json = serialize('json', lookup_model.objects.filter(state__in=searchVar).order_by(*ordering))
return HttpResponse(as_json, content_type='json')