如何对从AJAX调用返回的数据进行分组?

时间:2019-04-26 11:34:58

标签: javascript ajax rest

我在共享点中创建了一个收集用户信息的列表。每个条目都有日期。某些日子有很多条目。我的目标是创建一个具有日期的选择菜单。当我单击菜单时,将填充日期,但它们会重复。如何将它们作为单个值返回?

我试图嵌套另一个for循环和if语句。

$.ajax({
   url:url,
   method:'GET',
   headers:{ 'Accept': 'application/json; odata=verbose' },
   success: function(data){
     var dat = data.d.results;
      for (var i = 0;i < dat.length; i++){
    html+='<optionvalue='+itm.dateVal+'>'+itm.dateVal+'</option>';
       }     $('#week-selector').append(html);
   },
   error: function(e){
    console.log('error:'+e);
   }            
});

我得到的输出是:

3/3/2019
3/3/2019
3/3/2019
3/3/2019
3/6/2019
3/6/2019
3/10/2019
3/10/2019

我想获得的输出是:

3/3/2019
3/6/2019
3/10/2019

3 个答案:

答案 0 :(得分:1)

您可以轻松编写过滤器函数以获取不同的值。

var arr = [
"3/3/2019",
"3/3/2019",
"3/3/2019",
"3/3/2019",
"3/6/2019",
"3/6/2019",
"3/10/2019",
"3/10/2019"
];


var distinctDates = arr.filter(function(val, idx, self){ return self.indexOf(val) === idx; });

console.log(distinctDates);

在ES6中,您可以通过以下方式完成

var arr = [
"3/3/2019",
"3/3/2019",
"3/3/2019",
"3/3/2019",
"3/6/2019",
"3/6/2019",
"3/10/2019",
"3/10/2019"
];


var distinctDates = [...new Set(arr)];

console.log(distinctDates);

答案 1 :(得分:1)

您可以使用Set删除重复的值,然后将其转换回数组:

var arr = [
    "3/3/2019",
    "3/3/2019",
    "3/3/2019",
    "3/3/2019",
    "3/6/2019",
    "3/6/2019",
    "3/10/2019",
    "3/10/2019"
];

console.log(Array.from(new Set(arr)));
// ["3/3/2019", "3/6/2019", "3/10/2019"]```

答案 2 :(得分:0)

var arr = ['3/3/2019','3/3/2019','4/4/2019']

arr.filter(function(item,i){return arr.indexOf(item)== i;})