我在共享点中创建了一个收集用户信息的列表。每个条目都有日期。某些日子有很多条目。我的目标是创建一个具有日期的选择菜单。当我单击菜单时,将填充日期,但它们会重复。如何将它们作为单个值返回?
我试图嵌套另一个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
答案 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;})