Ниже сценарий Jquery занимает очень много времени. Пожалуйста, предоставьте мне решение, чтобы повысить производительность
для
(i = 0; i < fooLength; ++i) {
if (foo[i] != "") {
var option = foo[i].split("$");
if (option.length == 2) {
if ($("#" + destination).find("option[value='" + option[1] + "']").length == 0)
{
$("#" + destination).append($('<option></option>').val(option[1]).html(option[0]));
$("#" + source).find("option[value='" + option[1] + "']").remove();
}
}
}
}
Я пытаюсь добавить значение в список. Всего 5000 записей, поэтому его итерация выполняется 5000 раз и занимает много времени
Я пробовал это, но улучшения не было. Поэтому по анализу я обнаружил, что find() занимает больше времени. Я заменил этот код на код ниже, и произошло значительное улучшение.
for (i = 0; i < fooLength; ++i) {
if (foo[i] != "") {
var option = foo[i].split("$");
if (option.length == 2) {
if ($dest.each(function(){("option[value='" + option[1] + "']").length == 0;})){
$dest.append($('<option></option>').val(option[1]).html(option[0]));
$src.each(function(){if($(this).val()=="option[value='" + option[1] + "']")$(this).remove();});
}
}
}
}
Нет необходимости выбирать элементы каждый цикл:
var $dest = $("#" + destination), $src = $("#" + source);
for (i = 0; i < fooLength; ++i) {
if (foo[i] != "") {
var option = foo[i].split("$");
if (option.length == 2) {
if ($dest.find("option[value='" + option[1] + "']").length == 0) {
$dest.append($('').val(option[1]).html(option[0]));
$src.find("option[value='" + option[1] + "']").remove();
}
}
}
}