Jquery脚本需要非常非常长的时间

Jquery script taking very very long time

本文关键字:非常 时间 脚本 Jquery      更新时间:2023-09-26

下面的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 次并且需要很长时间

无需每个循环都选择元素:

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

我已经尝试过了,但没有太大的改进。所以通过分析,我发现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();});
                }
            }
        }
    }