Javascript 有没有办法过滤从AJAX查询创建的数组?

Javascript 有没有办法过滤从AJAX查询创建的数组?,javascript,ajax,rest,Javascript,Ajax,Rest,我运行了一个查询,用Sharepoint列表中的条目填充一个表-我试图做的是根据列表中特定字段的内容筛选此列表。这是否可能只使用一个列表和JavaScript,或者我需要创建不同的视图并根据选择的选项查询每个视图 函数getEvents(){ $.ajax({ url:“SharepointURL/_api/web/lists/getbytitle(‘事件列表’)/items?$select=标题、Id、优先级、IncidentStart、IncidentStatus、IncidentTitl

我运行了一个查询,用Sharepoint列表中的条目填充一个表-我试图做的是根据列表中特定字段的内容筛选此列表。这是否可能只使用一个列表和JavaScript,或者我需要创建不同的视图并根据选择的选项查询每个视图

函数getEvents(){ $.ajax({ url:“SharepointURL/_api/web/lists/getbytitle(‘事件列表’)/items?$select=标题、Id、优先级、IncidentStart、IncidentStatus、IncidentTitle、UpdateResolution、ImpactedArea”, 键入:“获取”, 标题:{“accept”:“application/json;odata=verbose”}, 成功:功能(数据){ var dResponse=数据d.结果; var results=document.getElementById('results'); results.innerHTML+=“事件
引用优先级开始时间发布最新更新”; for(响应中的var obj){ results.innerHTML+=“”+dResponse[obj]。Title+“”+dResponse[obj]。Priority+“”+dResponse[obj]。IncidentStart+“”+dResponse[obj]。IncidentTitle+“”+dResponse[obj]。UpdateResolution+“”; } } }); }
您可以在
dResponse
数组上使用
过滤器
功能。您没有指定所需的过滤器,但下面是一个基本示例

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
function getIncidents(){
 $.ajax({
  url: "https://office4.bt.com/sites/ccim/Mobile/_api/web/lists/getbytitle('Incident List')/items?$select=Title,Id,Priority,IncidentStart,IncidentStatus,IncidentTitle,UpdateResolution,ImpactedArea",
  type: "GET",
  headers: {"accept": "application/json;odata=verbose"},
  success: function (data) {
   var dResponse = data.d.results;
   // we filter the data before using it.
   // we use const because we do not plan on reassigning the variable.
   const filteredResponse = dResponse.filter((item) => item.someFilteringData);

   var results = document.getElementById('Results');
   results.innerHTML += "<tr><td>Incident<br>Reference</td><td style='width:20px'></td><td>Priority</td><td style='width:20px;'></td><td>Start Time</td><td style='width:20px'></td><td style='width:170px'>Issue</td><td style='width:20px'></td><td style='width:170px'>Latest Update</td><td style='width:20px'></td></tr>";
   for(var obj in filteredResponse){
    results.innerHTML += "<tr style='font-size:10pt'><td>"+filteredResponse [obj].Title+"</td><td></td><td>"+dResponse[obj].Priority+"</td><td></td><td>"+dResponse[obj].IncidentStart+"</td><td></td><td>"+filteredResponse [obj].IncidentTitle+"</td><td></td><td>"+dResponse[obj].UpdateResolution+"</td></tr>";
   }
  }
 });
}
</script>

函数getEvents(){
$.ajax({
url:“https://office4.bt.com/sites/ccim/Mobile/_api/web/lists/getbytitle('Incident List')/items?$select=标题、Id、优先级、IncidentStart、IncidentStatus、IncidentTitle、UpdateResolution、ImpactedArea“,
键入:“获取”,
标题:{“accept”:“application/json;odata=verbose”},
成功:功能(数据){
var dResponse=数据d.结果;
//我们先过滤数据,然后再使用它。
//我们使用const是因为我们不打算重新分配变量。
const filteredResponse=dResponse.filter((项)=>item.someFilteringData);
var results=document.getElementById('results');
results.innerHTML+=“事件
引用优先级开始时间发布最新更新”; for(过滤器响应中的var obj){ results.innerHTML+=“”+filteredResponse[obj]。Title+“”+dResponse[obj]。Priority+“”+dResponse[obj]。IncidentStart+“”+filteredResponse[obj]。IncidentTitle+“”+dResponse[obj]。UpdateResolution+“”; } } }); }
那么最终您希望通过一个或多个对象属性过滤对象数组吗?是的,很简单

let myArray = [ {a: 10, b: 'red'}, {a: 20, b: 'green'} ]
let filteredArray = myArray.filter(x=>x.b=='green')

一种更优雅的方式(如果可能的话)是将参数发送到API并过滤服务器端。

dResponse是什么样子的?您可以使用.filter()或.grep()API从代码中过滤出数组。看起来,
dResponse
是一个对象数组,因此您可以简单地调用它。如果API支持它,那么您应该在服务器端进行过滤。我不确定在这种情况下“过滤”是什么意思。您的意思是要告诉服务器只返回那些字段而不返回其他字段吗?不过,您在响应中使用了其他字段。发送到服务器的查询明确指出了所需的字段。也许我不理解这个问题。是的,dResponse是一个从SharePoint列表中提取的Json对象数组-通过筛选,我只想根据被筛选字段的内容是否包含特定的单词来显示项目。对于此解决方案,使用
dResponse.filter((item)=>item.someFilteringData)-是否
(项目)
指的是字段,即引用、开始时间等,以及
项目。someFilteringData
指的是我要筛选的内容?这是否需要精确匹配,或者如果字段仅“包含”给定的值,它将进行过滤?函数采用回调,在回调中您可以访问当前项。只要函数返回布尔值,就可以使用此项检查任何内容。如果此布尔值为true,则该项将包含在输出中。如果没有,它将被排除在外@异想天开