Jquery 如何在下拉列表中获得不同的值

Jquery 如何在下拉列表中获得不同的值,jquery,json,Jquery,Json,我实现了一个下拉列表,其中列表来自一个JSON文件,但JSON有重复的值。如何在下拉列表中获得唯一值?这是我的密码: $(document).ready(function() { $.getJSON("data.json",function(obj) { $.each(obj, function(key, value){ $("#dropdown1").append("<option value=" + key + ">" + valu

我实现了一个下拉列表,其中列表来自一个JSON文件,但JSON有重复的值。如何在下拉列表中获得唯一值?这是我的密码:

$(document).ready(function() {
    $.getJSON("data.json",function(obj) {
        $.each(obj, function(key, value){
            $("#dropdown1").append("<option value=" + key + ">" + value.name  + "</option>");
        });
    });
});

在第一个下拉列表中,我得到了5个值,
abc1
3次和
syn2
2次。我只想获得一次
abc1
syn2
。请帮忙

您可以通过将已添加到select的名称存储在一个数组中,并在添加下一个名称之前检查该数组来实现这一点。大概是这样的:

[{
    "name": "abc1",
    "date": 1459461600000
}, {
    "name": "abc1",
    "date": 1459461600000
}, {
    "name": "abc1",
    "date": 1459461600000
}, {
    "name": "syn2",
    "date": 1459461600000
}, {
    "name": "syn2",
    "date": 1458834026000
}];
var usedNames = [];
$.each(obj, function(key, value) {
    if (usedNames.indexOf(value.name) == -1) {
        $("#dropdown1").append("<option value=" + key + ">" + value.name + "</option>");
        usedNames.push(value.name);
    }
});
 $(document).ready(function() {
   $.getJSON("data.json",function(obj) {
   var duplicate= [];
   $.each(obj, function(key, value) {
     if (duplicate.indexOf(value.name) == -1) {
      $("#dropdown1").append("<option value=" + key + ">" + value.name + "</option>");
      duplicate.push(value.name);
      }
    });
  });
});
var usedNames=[];
$。每个(对象、功能(键、值){
if(usedNames.indexOf(value.name)=-1){
$(“#dropdown1”).append(“+value.name+”);
usedNames.push(value.name);
}
});


您可以对对象数组进行重复数据消除,但如果您的唯一要求是在一个循环中获取单个属性,那么这似乎是多余的。

您必须检查obj值是否重复,然后像这样附加到select选项:

[{
    "name": "abc1",
    "date": 1459461600000
}, {
    "name": "abc1",
    "date": 1459461600000
}, {
    "name": "abc1",
    "date": 1459461600000
}, {
    "name": "syn2",
    "date": 1459461600000
}, {
    "name": "syn2",
    "date": 1458834026000
}];
var usedNames = [];
$.each(obj, function(key, value) {
    if (usedNames.indexOf(value.name) == -1) {
        $("#dropdown1").append("<option value=" + key + ">" + value.name + "</option>");
        usedNames.push(value.name);
    }
});
 $(document).ready(function() {
   $.getJSON("data.json",function(obj) {
   var duplicate= [];
   $.each(obj, function(key, value) {
     if (duplicate.indexOf(value.name) == -1) {
      $("#dropdown1").append("<option value=" + key + ">" + value.name + "</option>");
      duplicate.push(value.name);
      }
    });
  });
});
$(文档).ready(函数(){
$.getJSON(“data.json”,函数(obj){
重复变量=[];
$。每个(对象、功能(键、值){
if(replicate.indexOf(value.name)=-1){
$(“#dropdown1”).append(“+value.name+”);
重复.push(value.name);
}
});
});
});

非常感谢您的帮助:)没问题,很乐意为您效劳。为我保留了这一天。@Rorymcrossan我想知道,如果下列名称的日期abc1和sync2不同,会怎样说abc1=“date”:1459461600000 abc1=“date”:1459461600001为什么在10分钟后发布与我完全相同的答案?这是因为我的互联网连接很慢。