如何洒落的类型,这将有超过1过滤器过滤器、这将、类型

2023-09-10 22:00:30 作者:毕竟是梦

 函数loadJson(过滤器){
  $阿贾克斯({
    键入:GET,
    网址:HTTP://path/to/example.json,
    数据类型:JSON,
    缓存:假的,
    beforeSend:函数(){
      的console.log('装');
    },
    成功:函数(响应){

  VAR filteredJson = $(响应).filter(函数(I,N){
        的console.log('类型'+ n.type);
        变种型= n.type.split(,);
        对于(VAR I = 0; I< type.length;我++){
         返回n.type ===过滤器;
     }
   });
  的console.log('解析......'+ filteredJson [0]。名称);
     //console.log('filter通过JSON'+ filteredJson);


      为(在filteredJson VAR键){
        如果(filteredJson.hasOwnProperty(键)){
          的console.log('名单'+ filteredJson [0]。名称);
        }
      }
      $('#手风琴)HTML(详细信息).fadeIn()。
    },
    错误:函数(jqXHR,textStatus,errorThrown){
      的console.log('XHR'+ jqXHR);
      的console.log('地位'+ textStatus);
      的console.log('错误'+ errorThrown);
    },
    完成:函数(){
      的console.log(完成了所有的任务);
    }
  })
}


$('过滤')。在('点击',功能(五){
  即preventDefault();
  的console.log($(本).attr('身份证'));
  loadJson($(本).attr('身份证'));
});
 

JSON

  VAR的JSONObject = [
    {
      名:A,
      类型:动物学家,业余爱好者
    },
    {
      名称:B
      类型:法官,业余爱好者
    },
    {
      名:C,
      类型:业余爱好者
    }
  ]。
 

正如你看到的,有超过1 JSON:类型。试图分裂里面类型filterJson,这样可以过滤通过所有类型和打印出来的名字。

如何洒所有类型要处理被过滤?

解决方案 供应酒类水处理设备 精密过滤器

在你的榜样,我认为你正在寻找的东西,如:

  VAR filteredJson = $(响应).filter(函数(I,N){
    返回n.type和放大器;&安培; n.type.indexOf(过滤器)!= -1;
});
 

这就是:如果变量过滤器任何类型被发现,然后通过它过滤

要测试,你可以这样做:

  $。每个(filteredJson,函数(){
    的console.log('过滤列表:'+ this.name);
});
 

在这里例子: http://jsfiddle.net/vo1t6znn/3/ 或SO-片段下面..

VAR VARDATA = [{   名:A,   类型:动物学家,业余爱好者 },{   名称:B   类型:法官,业余爱好者 },{   名:C,   类型:业余爱好者 }]; VAR过滤器=''; $(文件)。在('变','#filter',函数(){   过滤= $(本).VAL();   VAR filteredObj = $(VARDATA).filter(函数(I,N){     返回n.type和放大器;&安培; n.type.indexOf(过滤器)!= -1;   });   无功输出='过滤后的结果:;   $每个(filteredObj,功能(K,V){     的console.log(名单:+ this.name);     输出+ = this.name +',';   });   $('#结果)HTML(输出); });

&LT;脚本SRC =htt​​ps://ajax.googleapis.com/ajax /libs/jquery/2.1.1/jquery.min.js"></script> 过滤: &LT;选择一个id =过滤器NAME =过滤器&GT;   &LT;期权价值=动物学家&GT;动物学家&LT; /选项&GT;   &LT;期权价值=业余爱好者&GT;业余爱好者和LT; /选项&GT;   &LT;期权价值=法官&GT;法官&LT; /选项&GT; &LT; /选择&GT; &LT; D​​IV ID =结果&GT;更换过滤器,开始与LT; / DIV&GT;

function loadJson(filter){
  $.ajax({
    type: 'GET',
    url: 'http://path/to/example.json',
    dataType: 'json',
    cache: false,
    beforeSend: function(){
      console.log('loading');
    },
    success: function(response){

  var filteredJson = $(response).filter(function (i,n) {
        console.log('type ' + n.type);
        var type = n.type.split(',');
        for(var i=0; i<type.length;i++){
         return n.type === filter;
     }
   });
  console.log('parsing...' + filteredJson[0].name);
     //console.log('filter by json ' + filteredJson);


      for (var key in filteredJson){
        if(filteredJson.hasOwnProperty(key)){
          console.log('list ' + filteredJson[0].name);
        }
      }
      $('#accordion').html(details).fadeIn();
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log('XHR ' + jqXHR);
      console.log('status ' + textStatus);
      console.log('error ' + errorThrown);
    },
    complete: function(){
      console.log('finished all tasks');
    }
  })
}


$('.filter a').on('click', function(e){
  e.preventDefault();
  console.log($(this).attr('id'));
  loadJson($(this).attr('id'));
});

JSON

 var JSONObject = [
    {
      "name": "A",
      "type": "zoologist, hobbyist"
    },
    {
      "name": "B",
      "type": "judge, hobbyist"
    },
    {
      "name": "C",
      "type": "hobbyist"
    }
  ];

As you see, there are more than 1 in json: type. Tried to split inside types filterJson so that can filter through all types and print out the names.

How to spilt all the types to be processed to be filtered?

解决方案

In your example, I think you're looking for something like:

var filteredJson = $(response).filter(function (i, n) {
    return n.type && n.type.indexOf(filter) != -1;
});

That is: if the variable "filter" is found in any "type", then filter by it.

To test, you can do:

$.each(filteredJson, function () {
    console.log('Filtered list: ' + this.name);
}); 

Example here: http://jsfiddle.net/vo1t6znn/3/ or SO-snippet below..

var varData = [{
  "name": "A",
  "type": "zoologist, hobbyist"
}, {
  "name": "B",
  "type": "judge, hobbyist"
}, {
  "name": "C",
  "type": "hobbyist"
}];

var filter = '';

$(document).on('change', '#filter', function() {
  filter = $(this).val();

  var filteredObj = $(varData).filter(function(i, n) {
    return n.type && n.type.indexOf(filter) != -1;
  });

  var output = 'Result after filter: ';
  $.each(filteredObj, function(k, v) {
    console.log('list: ' + this.name);
    output += this.name + ', ';
  });
  $('#result').html(output);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Filter:
<select id="filter" name="filter">
  <option value="zoologist">zoologist</option>
  <option value="hobbyist">hobbyist</option>
  <option value="judge">judge</option>
</select>
<div id="result">Change filter to start</div>