2016-04-07 5 views
2

Я реализовал выпадающее меню, где список поступает из файла JSON, но JSON имеет повторяющиеся значения. Как я могу получить уникальные значения в этом выпадающем меню? Вот мой код:Как получить отличное значение в выпадающем списке

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

мой файл JSON выглядит следующим образом:

[{ 
    "name": "abc1", 
    "date": 1459461600000 
}, { 
    "name": "abc1", 
    "date": 1459461600000 
}, { 
    "name": "abc1", 
    "date": 1459461600000 
}, { 
    "name": "syn2", 
    "date": 1459461600000 
}, { 
    "name": "syn2", 
    "date": 1458834026000 
}]; 

В первом раскрывающемся списке теперь я получаю 5 значений, abc1 3 раза и syn2 2 раза. Я хочу получить как abc1, так и syn2 только один раз. Пожалуйста помоги!

ответ

2

Вы можете достичь этого, сохранив имена, которые вы уже добавили в select в массиве, и проверьте этот массив перед добавлением следующего имени. Что-то вроде этого:

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); 
    } 
}); 

Working example

Вы могли бы де-одурачить массив объектов, но это кажется излишним, когда ваше единственное требование, чтобы получить одно свойство в одном цикле.

+0

Спасибо большое за помощь ур :) – siya

+0

Нет проблем, рад помочь –

+0

Привет, есть кто-нибудь !! – siya

0

Вы должны проверить значения OBJ для дубликата затем добавить к выберите опцию, как это:

$(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); 
     } 
    }); 
    }); 
}); 
+0

Зачем оставлять тот же ответ, что и я, через 10 минут? –

+0

Это происходит потому, что мое подключение к Интернету происходит медленно. – Sumanta736