Опции дубликата фильтра от выбора выпадают

Существует два главного привыкнуть приблизительно к хранилищу данных Механизма Приложения когда по сравнению с 'традиционными' реляционными базами данных:

  • хранилище данных не делает различия между вставками и обновлениями. То, когда Вы называете помещенными () на объекте, тот объект хранится к хранилищу данных с его уникальным ключом и чем-либо, что имеет тот ключ, перезаписывается. В основном каждый вид объекта в хранилище данных действует как огромная карта или отсортированный список.
  • Запросы, как, на который Вы сослались, намного более ограничены. Никакие соединения, для запуска.

ключевая вещь понять - и причина позади обоих этих различий - состоит в том, что Bigtable в основном действует как огромный заказанный словарь. Таким образом помещенная операция просто устанавливает значение для данного ключа - независимо от любого предыдущего значения для того ключа, и операции выборки ограничены выборкой единственных ключей или непрерывных диапазонов ключей. Более сложные запросы сделаны возможными с индексами, которые являются в основном просто собственными таблицами, позволяя Вам реализовать более сложные запросы как сканирования на непрерывных диапазонах.

, Как только Вы поглотили это, Вам были нужны элементарные знания для понимания возможностей и ограничений хранилища данных. Ограничения, которые, возможно, казались произвольными, вероятно, имеют больше смысла.

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

С точки зрения того, как измениться, как Вы представляете данные, самой важной вещью является предварительное вычисление. Вместо того, чтобы делать соединения во время запроса, предварительно вычислите данные и сохраните его в хранилище данных по мере возможности. Если Вы хотите выбрать случайную запись, генерировать случайное число и снабдить его каждой записью. Там является целой поваренной книгой подобных подсказок и обманывает здесь забастовка> Редактирование: поваренная книга больше не является существующей.

11
задан Greg Campbell 9 December 2009 в 18:52
поделиться

3 ответа

Вы можете сделать это с помощью простого цикла - может быть более умный способ справиться с этим с помощью селекторов jQuery, которых я не вижу. Следующее должно работать:

var usedNames = {};
$("select[name='company'] > option").each(function () {
    if(usedNames[this.text]) {
        $(this).remove();
    } else {
        usedNames[this.text] = this.value;
    }
});

Изменить: Вот однострочник в функциональном стиле, который делает это с помощью отличного Underscore.js , хотя предыдущая версия почти наверняка более эффективна:

_.each(_.uniq(_.pluck($("select[name='company'] > option").get(), 'text')), function(name) { $("select[name='company'] > option:contains(" + name + ")").not(":first").remove(); });
32
ответ дан 3 December 2019 в 01:16
поделиться

Вы можете сделать что-то вроде этого:

var previousOption;
$('select[name=company] option').each(function() {
    if (this.text == previousOption) $(this).remove();
    previousOption= this.text;
});
6
ответ дан 3 December 2019 в 01:16
поделиться

Вы можете попробовать следующий код, он удалит дубликаты независимо от их положения. Здесь #targetSelect - это ваш целевой Dropdown

var a = new Array();
$(#targetSelect).children("option").each(function(x){
test = false;
b = a[x] = $(this).text();
for (i=0;i<a.length-1;i++){
if (b ==a[i]) test =true;
}
if (test) $(this).remove();
}); 
5
ответ дан 3 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: